2013-10-22 128 views
0

假設變量包含像下面的HTML標記:添加ID爲段落元素屬性

<p> paragraph 1 </p> 
<p> paragraph 2 </p> 
... 

我怎樣才能把它轉化爲這樣的事情:

<p id="1" data-pic="someStaticText"> paragraph 1 </p> 
<p id="2" data-pic="someStaticText"> paragraph 2 </p> 
... 

當然,這不僅僅是由段落元素組成。

+0

你需要一個HTML DOM PASER。試試xpath或SimpleHtmlDom。 – silentboy

+0

@silentboy:「Try xpath」是什麼意思? – zerkms

+0

@zerkms,意思是一樣清楚,不要試圖發送垃圾郵件 – silentboy

回答

-1

您可以使用while循環替換字符串的第一個<p>。

$id = 1; 
while(strpos($html_string, '<p>') !== FALSE){ 
    $html_string = str_replace('<p>','<p id="'.$id.'" data-pic="someStaticText">',$html_string, 1); 
    $id++; 
} 
+0

'致命錯誤:只有變量可以通過引用傳遞...第3行' – Iryn

+0

另外,在'FALSE))'中,第二個括號應該被刪除。 – Iryn

0

好吧,我想通了,而這樣做some more research

$html_string = preg_replace_callback(
    "(<p(.*?)>)is", 
    function($m) { 
     static $id = 0; 
     $id++; 
     return "<p id=\"p".$id."\"data-pic=\"someStaticText\"".$m[1].">"; 
    }, 
$html_string);