Удалить текст из строки PHP - PullRequest
1 голос
/ 13 декабря 2010

У меня отображается следующий код:

[caption id="attachment_13" align="alignnone" width="235" caption="Event 1"]
   <img src="image.png" />
[/caption] 

Я хочу, чтобы отображался только тег img.

Я пытался использовать <?php echo strip_tags($value, '<img>'); ?>, но потому что [тег caption] на самом деле не является правильным тегом HTML, я не знаю, как его удалить.Есть ли функция, которая удалит текст из строки?

Будет ли str_replace работать?

Ответы [ 5 ]

2 голосов
/ 13 декабря 2010

обычно регулярное выражение не рекомендуется для разбора HTML. Но если вы просто хотите что-то быстрое, вы можете использовать:

<?php

$s = '[caption id="attachment_13" align="alignnone" width="235" caption="Event 1"]
   <img src="image.png" />
[/caption] ';

if (preg_match('/<img[^>]*>/', $s, $matches)) echo $matches[0];

?>

выход:

<img src="image.png" />
0 голосов
/ 13 декабря 2010

попробуйте какое-нибудь регулярное выражение: http://www.php.net/manual/en/function.preg-replace.php

что-то в этом роде должно работать с минимальной адаптацией (я не работаю с PHP с долгого времени xD):

<?php
$pattern = '/.*(<img[^>]+)>.*/';
$remplacement = '$1';
echo preg_replace($pattern, $replacement, $value);
?>
0 голосов
/ 13 декабря 2010

Вы можете, однако, изменить [] на <>, а затем сделать strip_tags

$replaceThis = array('[', ']');
$withThis = array('<', '>');
echo strip_tags(str_replace($replaceThis, $withThis, $value), '<img>');
0 голосов
/ 13 декабря 2010

Попробуйте

$str = "[caption id="attachment_13" align="alignnone" width="235" caption="Event 1"]
   <img src="image.png" />
[/caption] ";
$arr = explode ( '<img' , $str);
$arr2 = explode ( '>' , $arr[1]);

echo '<img' . $arr2[0] . '>';
0 голосов
/ 13 декабря 2010
preg_match('/\<img src=[^\>]+\>/', $value, $imgTag);
echo $imgTag[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...