2014-02-10 154 views
3

是否可以通過strip_tags去除鏈接到圖像上的標籤?strip_tags - Strip <a>標籤<img>

比如我想

<a href=""><img src="" /></a> 

<img src="" /> 

我需要保持形象,並刪除所有標籤一個是他們身邊。除了使用Simple HTML Dom我希望有這樣做

+0

是,使用普通的'DOM' ......這將是令人眼花繚亂的快速,如果你已經習慣了simpleHTMLDom。 – Wrikken

+0

我發現這個線程,我認爲應該處理您的問題:http://stackoverflow.com/questions/8684395/strip-outer-element-ie-remove-parent-with-php-parser – steinmas

+0

不會'strip_tags($ str,'')'是嗎? – Bugs

回答

1

使用strip_tags的你不能做到這一點。您可以使用正則表達式來代替:

$text = preg_replace("/<a[^>]+\>(<img[^>]+\>)<\/a>/i", '$1', $text); 

這種方式速度更快,比簡單的HTML更容易大教堂

+1

問題是,這會錯誤地替換文本,例如''和'words'。 – Anonymous

+0

@匿名,你說得對。但否則正則表達式變得巨大。你所評論的這種情況很少見。但無論如何,是的,我同意你的看法。 – Hast

0

您可以使用正則表達式來做到這一點更簡單的方法:

$string = '<a href=""><img src="" /></a>'; 
$string = preg_replace('/(<a(?: [^>]+| |)>)(?:[^<]+|)<img(?: [^>]+| |)>(?:[^<]+|)(<\/a>)/','$1$2',$string); 

這應該鏈接內更換什麼,如果有一個從內內它的<img>標籤只要鏈接之間沒有其他標籤,鏈接聲明。

如果你想只能更換相同的情況下的<img>標籤部分,你可以使用:

$string = '<a href=""><img src="" /></a>'; 
$string = preg_replace('/(<a(?: [^>]+| |)>)([^<]+|)<img(?: [^>]+| |)>([^<]+|)(<\/a>)/','$1$2$3$4',$string);