Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > preg_replace vs preg_match_all


Автор: svoloch 16.3.2011, 16:30
имеется файл svg(xml), изначально нужно было просто удалить в нем все теги symbol, для чего использовалась строка
Код

$svg = preg_replace('/<symbol[\S\s]*?symbol>/','',$svg);

однако его использование сводило строку к пустой.
в качестве эксперимента решил сделать
Код

preg_match_all('/<symbol[\S\s]*?\/symbol>/',$svg,$match);
echo '<pre>';
print_r($match);
echo '</pre>';

на этот раз все неплохо искалось, но решив посмотреть на результат
Код

preg_match_all('/<symbol[\S\s]*?\/symbol>/',$svg,$match);
foreach($match as $str) $svg = str_replace($str,'',$svg);

оказалось, что теги удаляются, но не все
совершенно не могу понять почему поиск и замена ищут по разному, почему поиск не находит все вхождения. правильно ли использовать [\S\s] для обозначения любого символа?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)