从PHP字符串中删除文本

时间:2010-12-13 17:07:49

标签: php wordpress

我回复了以下代码:

[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 个答案:

答案 0 :(得分:2)

通常,不建议使用正则表达式进行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" />

答案 1 :(得分:0)

preg_match('/\<img src=[^\>]+\>/', $value, $imgTag);
echo $imgTag[0];

答案 2 :(得分:0)

尝试

$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] . '>';

答案 3 :(得分:0)

但是,您可以使用[]更改<>,然后执行strip_tags

$replaceThis = array('[', ']');
$withThis = array('<', '>');
echo strip_tags(str_replace($replaceThis, $withThis, $value), '<img>');

答案 4 :(得分:0)

尝试一些正则表达式: http://www.php.net/manual/en/function.preg-replace.php

类似的东西应该以最小的适应性工作(我很长时间没有使用PHP了xD):

<?php
$pattern = '/.*(<img[^>]+)>.*/';
$remplacement = '$1';
echo preg_replace($pattern, $replacement, $value);
?>