为了账号安全,请及时绑定邮箱和手机立即绑定

如何用str_replace()插入x段的段落

如何用str_replace()插入x段的段落

PHP
侃侃尔雅 2022-06-11 16:51:23
我正在尝试使用 插入一个元素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;?>我尝试使用<p>[1],不幸的是它对我不起作用,有什么方法可以获取第一段并替换它?
查看完整描述

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;

?>


查看完整回答
反对 回复 2022-06-11
?
喵喵时光机

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();


查看完整回答
反对 回复 2022-06-11
  • 2 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号