PHP preg_replace - удалить весь текст, кроме HTML-тегов IMG - PullRequest
2 голосов
/ 07 мая 2011
$var = "text<img src='/img/tag1.gif' alt='' />
text text text text text <i>-blah-blah-blah-blah-blah-blah</i> 
<img src='/img/tag2.gif' alt='' />
<img src='/img/myhome.gif' alt='' />
<b>text</b> text text blah-blah-blah-blah-blah-blah-blah-blah 
<img src='/img/age.gif' alt='' />";

$var = preg_replace('/(<img(.+?)>)/i', '', $var);

echo $var;

Как в этом тексте заменить все текстовое содержимое, кроме тегов IMG?

Ответы [ 2 ]

3 голосов
/ 07 мая 2011

Если вы не возражаете против удаления новых строк, вы можете использовать это:

<?php
$var = preg_replace('#.*?(<img.+?>).*?#is', '$1', $var);
2 голосов
/ 07 мая 2011

Обрезать любые теги, не являющиеся img, PHPs strip_tags() будет проще:

$var = strip_tags($var, "<img>");

Удаление только текста является громоздким, и его гораздо проще извлечь, чем удалить в этом случае:

preg_match_all('#<img\b[^>]*>#', $var, $match);
$var = implode("\n", $match[0]);
...