2013-08-23 4 views
4

У меня есть следующее значение $ img_info переменной ...Отфильтровать содержимое конкретного тега из переменной PHP?

<p><img src="images/a.jpg" alt="" />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eu ullamcorper felis.</p> 

Как фильтровать или получить конкретный img tag содержание только $img_info переменной? Есть ли любую функцию, доступную в PHP без использования explode()? ...

Пожалуйста, кто может мне помочь ...

+0

Таким образом, ожидаемый выход только '

Lorem Ipsum боль ...

'? –

+0

img только тег содержание: мне нужен из переменной $ img_info ... – Vasu

ответ

3

Вы можете использовать DOMDocument для этого:

$dom = new DOMDocument; 
$dom->loadHTML($img_info); 

echo $dom->saveXML($dom->getElementsByTagName('img')->item(0)); 

Выход:

<img src="images/a.jpg" alt="" /> 
+0

Спасибо 4 ур ответ Джек ... Но я использую 5.3.5 ... Он показывает предупреждение: DOMDocument :: saveHTML() ожидает точно 0 параметров, 1 заданных в E: \ xampp \ htdocs \ test.php в строке 17 – Vasu

+0

@Vasu Тогда просто используйте '-> saveXML()' вместо этого. –

+0

Спасибо, Джек ... Он работает Хорошо ... – Vasu

1

Да, есть preg_match()

$img_info = '<p><img src="images/a.jpg" alt="" />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eu ullamcorper felis.</p>'; 
preg_match('/\<img\s+(?:.*?)\/\>/i', $img_info, $rgMatches); 
var_dump($rgMatches[0]); 

такого рода проблемы обычно решаются через regex, так что зная их, будет очень полезно

+0

Спасибо Alma Do Mundo ... Могу ли я узнать объяснения '/ \ /i' в preg_match Alma Do Mundo ... – Vasu

+1

Символы '/ ../ 'delimits regex inside, модификатор' i' указывает на поиск без учета регистра. '\ s' - для пробельных символов,' + 'повторяется 1 или более раз. '?:' означает не записывать группу в результат, '.' для любого символа, а' * 'означает повторение 0 или более раз. –