@Kirill-Gorelov
С ума с IT

В чем проблема при записи в файл на php?

Есть строка:
---------------------------------------
>> Москва: +7 (495) 565-38-71
>> Санкт-Петербург: +7 (812) 385-57-81
>> Регионы: +7 (8362) 32-85-45

Магазин tara-tovara.ru, info@tara-tovara.ru
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45
---------------------------------
Получаю номер регулярными выражениями:
preg_match_all('/(Москва:|Санкт-Петербург:|Регионы:)\s*([\+\-\d\(\)\s]+)/m', $textt, $r);
$resultphone = array_unique($r);
$phone = array(); // массив для телефонов
foreach ($resultphone[0] as $v) { // перебираю телефоны для заполнения массива
$vv = trim($v);
 // echo($v.'<br>'); // для вывода
 $phone[] = $vv;// для записи
}
//удаляю дубликаты
$resultphone = array_unique($phone);

В результате получаю массив в нужном виде:
Array
(
[0] => Москва: +7 (495) 565-38-71
[1] => Санкт-Петербург: +7 (812) 385-57-81
[2] => Регионы: +7 (8362) 32-85-45
)
Перебираю эти номера для записи
foreach($resultphone as $value) // запись хорошего массива
	{
	    echo $value. "\n";
	$str2.= "\n". $value; //"\n".
	}

Переменная $str2 выводит в нужном мне виде:
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45
Делаю var_dump этой переменной
var_dump($str2);
/home/ubuntu/workspace/gm3.php:117:
string(421) "
Array
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45
Москва:
Санкт-Петербург:
Регионы:
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45"

И соответственно в файл записывается такая же ерунда. Почему так происходит?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@OVK2015
$testStr = '>> Москва: +7 (495) 565-38-71
>> Санкт-Петербург: +7 (812) 385-57-81
>> Регионы: +7 (8362) 32-85-45

Магазин tara-tovara.ru, info@tara-tovara.ru
Москва: +7 (495) 565-38-71
Санкт-Петербург: +7 (812) 385-57-81
Регионы: +7 (8362) 32-85-45';

preg_match_all('/(Москва:|Санкт-Петербург:|Регионы:)\s*([\+\-\d\(\)\s]+)/m', $testStr, $resultphone);
$phone = array(); // массив для телефонов
foreach ($resultphone[0] as $v) { // перебираю телефоны для заполнения массива
$vv = trim($v);
// echo($v.'
'); // для вывода
$phone[] = $vv;// для записи
}
//удаляю дубликаты
print_r($resultphone);
$resultphone = array_unique($phone);

$str2 = "";
foreach($resultphone as $value) // запись хорошего массива
{
// echo $value. "\n";
$str2.= "\n". $value; //"\n".
}


echo "****************\n";
echo $str2."\n";
die();
Да, кстати, насчет самой регулярки. В исходных строках ":" разграничивает название "владельца" и номер телефона? Если да,- ее упростить можно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
У вас все переменные по разному называются.

preg_match записывает результат в $r, а затем вы работаете уже с вообще другими названиями.

Вы вообще обрабатываете, выводите не то что надо.

Либо код кривой выложили.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы