2017-07-24 21 views
0

我必須將數千個鏈接替換爲Photobucket上託管的圖像,並將鏈接更改爲不同的託管站點。鏈接包含在Wordpress網站的帖子中。也就是說,我必須要找到的語法如下:正則表達式來查找DIV標籤並檢索圖像名稱

<div style="clear: both; text-align: center;"><a href="http://photobucket.com/albums/mypath/IMAGENAME.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="photobucket.com/albums/mypath/IMAGENAME.jpg" /></a></div> 

其中mypath可以改變,並與

<img class="alignnone size-full aligncenter" src="http://mynewpath/IMAGENAME.jpg" alt="" /> 

更換整個DIV標籤,我發現Search Regex plugin爲WordPress,這使得大規模搜索&使用替換正則表達式的。不幸的是,我無法創建足夠的RegEx來識別我想要的DIV標籤。我想出了這個:

<div\b[^>]*>.*?<img.*?photobucket.*?\/(.*?\.jpg).*?<\/div> 

它的工作大部分時間。但是,它有時會捕獲連續的DIV標記對。我如何確保捕獲一個DIV標籤並在其中捕獲圖像名稱?

PS:我知道不推薦使用RegEx解析HTML,但Search Regex插件是我發現解決我的問題的最快方法。

編輯:編輯爲清楚起見

+0

爲什麼不做SQL搜索和替換?你可以改變數據本身,而不是在前端用一些腳本覆蓋它... –

+0

@TomislavSvecak呃...這可能是一個選項,但WordPress網站託管,我不知道如何訪問數據庫直。我只是想幫助一個朋友,我認爲正則表達式是最快的方法。 – Wolfy

回答

0

那麼你可以使用jQuery來爲你做的例子。 由於您無權訪問SQL來進行搜索和替換。

可以說你有URL這樣http://replaceThis.com/somethingSomething 與未來的jQuery,你可以替換URL的所有實例:

$('a[href^="http://replaceThis.com"]').each(function(){ 
    var thisHref = $(this).attr('href'); 
    thisHref.replace('replaceThis','withThis'); 
}); 

編輯:

你可以使用http://api.jquery.com/unwrap/ 您可以檢查該元素父母的div,如果它解開它。

+0

感謝您的建議。不幸的是,我必須更改DIV標籤,而不僅僅是URL。對不起,如果我不清楚。 – Wolfy

+0

對不起,沒有看到一個。您需要在DIV標籤中更改哪些內容? –

+0

我必須用IMG標籤替換整個DIV標籤。在原始問題中看到我的例子,爲了清晰起見編輯(我希望:)) – Wolfy