@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, а затем вы работаете уже с вообще другими названиями.

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

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

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

Войти через центр авторизации
Похожие вопросы