Php 如何用str_replace()插入x段的数量

Php 如何用str_replace()插入x段的数量,php,html,replace,Php,Html,Replace,我试图插入一个带有str_replace()的元素,计算内容中的段落数,例如: <?php $result_information = "<p>parrafo 1</p> <p>parrafo 2</p> <p>parrafo 3</p>"; $result_information1 = str_replace("<p>[1]", "<p>cambio", $result_informatio

我试图插入一个带有
str_replace()
的元素,计算内容中的段落数,例如:

<?php
$result_information = "<p>parrafo 1</p>  <p>parrafo 2</p> <p>parrafo 3</p>";
$result_information1 = str_replace("<p>[1]", "<p>cambio", $result_information);
echo $result_information1;
?>


我尝试使用
[1]
,不幸的是,它对我不起作用,任何方法都无法获取第一段并替换它?

它将使用preg\u split()从$result\u 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;
?>

我想最好使用DOMDocument来处理这个问题。和往常一样,这比使用replace/regex要复杂得多,但通常值得付出努力,因为它将内容处理为HTML而不仅仅是纯文本

能够处理文档片段的主要代码主要基于,我所做的只是添加了引用您所关注的段落的功能

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();
$result_information=“parrafo 1

parrafo 2

parrafo 3

”; $doc=新的DOMDocument(); $doc->loadHTML($result_information); $pTags=$doc->getElementsByTagName(“p”); $pTags[1]->textContent=“cambio”; $container=$doc->getElementsByTagName('div')->item(0); $container=$container->parentNode->removeChild($container); 而($doc->firstChild){ $doc->removeChild($doc->firstChild); } while($container->firstChild){ $doc->appendChild($container->firstChild); } echo$doc->saveHTML();
有很多方法可以做到这一点,但我认为您要么需要在

上分解成一个数组,要么使用html解析库来识别和替换所需的部分。你也可以把它和这个结合起来:+
str_replace()
我相信这是对所问问题的最好答案,不过,举个例子会更有帮助。部分感谢你,有没有办法保持段落完整,插入元素?我更新了我的例子。