2012-09-25 128 views
0

如何修改以下正則表達式是如果<img>標籤內<script>標籤不執行(分別爲<script language="...">,意爲<script*>正則表達式表達對圖像

代碼:

function seo_friendly_images($content) { 

return preg_replace_callback('/<img[^>]+/', 'seo_friendly_images_process', $content); 

} 

add_filter('the_content', 'seo_friendly_images', 100); 
+1

[你試過一個HTML解析器嗎?](http://stackoverflow.com/a/1732454/476) – deceze

+0

我正在研究它,這是有條件的去正確的方式,如果(stripos($ content,'<腳本')!==假){ –

+0

[你不應該使用正則表達式。](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained -tags/1732454#1732454)但是,[您的問題與此類似。](http://stackoverflow.com/questions/12554005/c-sharp-regex-replace-in-string-only-outside-tags) –

回答

1

這取決於您使用的語言。有些語言支持向前看或向後看(例如,僅在後面跟着條或匹配條時才匹配foo,前提是foo)。

這看起來像我的PHP報告有前瞻支持(http://php.net/manual/en/regexp.reference.assertions.php)。

嘗試使用正則表達式像

/<script[^>]+>(?=<img)/ or /<script[^>]+>(?!<img)/ 

?=指示前進,正面看?!表明負面展望。 正面向前看的意思是「Foo後面是Bar」,否定向前意思是「Foo後面沒有Bar」。

-1

你可能想試試這個:

return preg_replace_callback('<img[^<]+?>', 'seo_friendly_images_process', $content); 

未測試thouogh。