2010-12-13 273 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); 
?>