2 回答
TA贡献1872条经验 获得超4个赞
它将使用 preg_split() 从 $result_information 创建一个数组,然后替换数组的第一个元素。
<?php
$result_information = "<p>parrafo 1</p> <p>parrafo 2</p> <p>parrafo 3</p> <p>parrafo 4</p>";
$result_information = preg_replace("/<\/p>(.*?)<p>/", "<p></p>", $result_information); # remove spaces
$array = preg_split("/<p>(.*?)<\/p>/", $result_information, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$array[0] = "cambio";
$array[2] = "cambio";
$result_information1 = "<p>" . implode($array, "</p><p>"). "</p>";
echo $result_information1;
?>
TA贡献1846条经验 获得超7个赞
恕我直言,最好使用 DOMDocument 来处理这个问题。一如既往,这比使用替换/正则表达式更复杂 - 但通常值得付出努力,因为它将内容处理为 HTML 而不仅仅是纯文本。
能够处理文档片段的主要代码很大程度上基于https://stackoverflow.com/a/29499398/1213708,我所做的只是添加了在您之后引用段落的能力。
p 标签部分只是
$pTags = $doc->getElementsByTagName("p");
$pTags[1]->textContent = "cambio";
所以首先是获取 p 标签的列表 - 你现在有一个数组,你可以在第二行代码中设置它。
$result_information = "<p>parrafo 1</p> <p>parrafo 2</p> <p>parrafo 3</p>";
$doc = new DOMDocument();
$doc->loadHTML("<div>$result_information</div>");
$pTags = $doc->getElementsByTagName("p");
$pTags[1]->textContent = "cambio";
$container = $doc->getElementsByTagName('div')->item(0);
$container = $container->parentNode->removeChild($container);
while ($doc->firstChild) {
$doc->removeChild($doc->firstChild);
}
while ($container->firstChild ) {
$doc->appendChild($container->firstChild);
}
echo $doc->saveHTML();
- 2 回答
- 0 关注
- 215 浏览
添加回答
举报
