2012-02-08 104 views
0

所以我發生了一個問題。我有一個代碼 -preg_replace如何做到這一點?

[caption id="attachment222" align="aligncenter" width="520" caption="caption ghoes here"]<img class="image-caption" title="title" src="picture link goes here" alt="" width="520" height="328" />[/caption] 

所以基本上我需要做的就是去到$內容,讓每個<img> SRC是內部[字幕] [/字幕]標籤,更多信息,請參見上面的代碼,並在標題內插入src鏈接並刪除img標籤,最終它看起來像[caption id="attachment222" align="aligncenter" width="520" caption="caption ghoes here" url="picture link goes here"][/caption]

正如你所看到的,src也被更改爲url。希望你能幫助我。

+2

最好使用DOM不是正則表達式。 – anubhava 2012-02-08 09:09:20

+0

聽起來像有人需要學習正則表達式! +1 @anubhava DOM – Zenexer 2012-02-08 09:09:46

+0

@anubhava這與RegEx完美結合。 DOM對於這個來說太笨拙了。我懷疑它甚至可以正常工作,因爲括號中的元素很可能不會最終成爲DOM節點。 – bummzack 2012-02-08 09:36:06

回答

0

這應該工作:

$parsed = preg_replace(
    '{\[caption([^\]]+)\]<img.*?src=["\'](.*?)["\'].*?/>}mi', 
    '[caption$1 url="$2"]', 
    $sourceText 
); 
+0

謝謝,它像一個魅力,我認爲是時候開始學習正則表達式了 – user1184908 2012-02-08 09:29:37

0

你的正則表達式可能類似於#<img.*?/>#i。我會讓你弄清楚其餘的。

1

這不是確切的,但它會指出你在正確的方向。

使用這樣的regexpression會做兩件事情讓你的字幕數據和圖像的src

[caption (.*)]<img class="image-caption" title="title" src="(.*)" alt="" width="520" height="328" />[/caption] 

然後你的preg_replace本使用它。

[caption $1 src="$2"][/caption] 

$ 1在您的標題的內容()和$ 2是圖像SRC。如果[img]標籤中的標題和其他屬性是動態的,那麼只需在reg express中將它們替換爲。像這樣。

[caption (.*)]<img class=".*" title=".*" src="(.*)" alt=".*" width=".*" height=".*" />[/caption] 

這應該工作。 (我吮吸正則表達式,所以可能會有更優雅的方式)。