2013-10-22 100 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);