Пытаюсь поймать текст между <item></item> пишу такую регулярку $patterns="/(<item>)(.)(<\/item>)/U"; preg_match_all($patterns,$what,$res); print_r($res); Выводит пустой массив!
PHP: <?php $what = '<item>text</item> <item> text2 </item>'; $patterns = "#<item>(.*)</item>#Us"; preg_match_all($patterns, $what, $res); print_r($res); ?>
PHP: Array ( // полное совпадение с шаблоном [0] => Array ( [0] => <item>text</item> [1] => <item> text2 </item> ) // совпадения в скобках [1] => Array ( [0] => text [1] => text2 ) )
Код (Text): $what = ' <item> <qqq>sdfg</qqq> <www>sdfg</www> </item> <eee>sdfg</eee> <aaa>sdfg</aaa> <item> </item> '; $patterns = "#<item>(.*)</item>#Us"; preg_match_all($patterns, $what, $res); print_r($res); почему он вырезает теги внутри <item></item>
это не он вырезает. Это на странице не отображается в браузере - он их воспринимает как неизвестные теги. Посмотрите исходный код в браузере и увидете их
PHP: <?php $what = ' <item> <qqq>sdfg</qqq> <www>sdfg</www> </item> <eee>sdfg</eee> <aaa>sdfg</aaa> <item> </item> '; $patterns = "#<item>(.*)</item>#Us"; preg_match_all($patterns, $what, $res); ob_start(); print_r($res); echo '<pre>'.htmlspecialchars(ob_get_clean()); ?>