2011-03-17 59 views
0

我有一個包含文本和一些html元素的字符串。我想找到大小縮略圖的元素,並在其周圍添加一些html。查找,獲取並將html添加到元素中

例如,來自:

<img class="size-thumbnail wp-image-279 alignleft" title="fellaisworkinghard" src="workinghard-150x150.png" alt="" height="150" width="150"> 

到:

<div style="width:150px;" class="article-image"> 
    <img class="size-thumbnail wp-image-279 alignleft" title="fellaisworkinghard" src="workinghard-150x150.png" alt="" height="150" width="150"> 
    <span style="width:150px;" class="article-image-content">BLABLA</span> 
</div> 

上div和跨度元件的寬度從該圖像的寬度取。 這樣做的最好方法是什麼,以及如何?

我想使用正則表達式來獲得高度,但我不知道如何在正確的位置添加其他所有東西。

+0

*(相關)* [最佳方法來解析HTML(http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon 2011-03-17 12:41:58

+0

由於這個帶標籤的Wordpress,最簡單的方法是在生成初始img標籤的位置進行更改,而不是稍後更改它,例如更改生成的PHP代碼以直接添加附加標記。 – Gordon 2011-03-17 12:45:46

+0

@戈登是的我正在寫一個過濾器函數來添加這個。如果我在某種程度上可以添加它,那會很好,但是因爲我正在編寫一個主題,我不想更改根文件。 – Patrik 2011-03-17 12:59:03

回答

0

您可以使用http://www.php.net/manual/en/class.domelement.php DOM元素來查找和操作HTML。

也即時使用和推薦http://framework.zend.com/manual/en/zend.dom.query.html Zend_Dom_Query用於查找和操作html。它完美的作品。

(如果你想你需要緩衝,操作和刷新到瀏覽器的同一個頁面上此操作。)

+0

我從來沒有與此工作,但該網頁是動態的,所以內容只是一個字符串。從來沒有一個HTML頁面。它看起來像這樣:數據庫 - >我的代碼 - > echo – Patrik 2011-03-17 13:00:24

+0

好吧,我明白了。你需要從你的WordPress模板中改變它。 – osm 2011-03-17 13:12:19

+0

@Patrik它並不重要(很多)它是一個完整的HTML頁面或只是一個片段。 DOM可以處理這個問題。 Zend_Dom位於DOM之上並添加了CSS選擇器。 – Gordon 2011-03-17 13:17:02

0

你總是可以扔掉它的jQuery。讓你的主題enqueue jquery,並將其添加到你的標題。

jQuery(document).ready(function() { 
    jQuery(".size-thumbnail").wrap("<div style='width:150px;' class='article-image'/>"); 
    jQuery(".size-thumbnail").after("<span style='width:150px;' " + 
            "class='article-image-content'>BLABLA</span>"); 
}); 

不是最完美的解決方案,但它具有所期望的結果...