2010-12-13 132 views
1

我有下面的代码被删除呼应文字:从PHP字符串

[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有用吗?

回答

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" /> 
+0

这很好。问题在于该字符串未被Wordpress解析。要解析标题标签,你需要添加下面的代码:'apply_filters('the_content',$ value);' – hohner 2010-12-13 17:23:37

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

那会输出'Array',所以,如果有只有一个比赛用'echo $ imgTag [0];' – stealthyninja 2010-12-13 17:17:04

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

你可以,但是,与<>改变[]然后做strip_tags

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

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

类似的东西应该以最小的适应工作(我不PHP因为长长久久的xD工作):

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