Php 向段落元素添加id属性

Php 向段落元素添加id属性,php,Php,假设变量包含如下所示的html标记: <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> ... 当然,它不仅仅由段落

假设变量包含如下所示的html标记:

<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>
...

当然,它不仅仅由段落元素组成

您可以在每次迭代中使用while循环来替换字符串的第一个

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

嗯,我是在做以下事情时发现的:


您需要一个html dom paser。试试xpath或SimpleHtmlDom。@silentboy:你说的试试xpath是什么意思?@zerkms,意思很清楚,就像不要尝试一样spamming@silentboy:对不起?我问你是因为你的最后一句话没有什么意义,我想澄清一下。@zerkims,没关系。使用xpath或SimpleHtmlDom,这项工作并不十分困难。所以我问他是否敢于处理这个致命的错误:在。。。第3行,如果为FALSE,则应删除第二个括号。
$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);