Php 如何替换最后一个HTML列表项?
如何替换此字符串中的最后一个Php 如何替换最后一个HTML列表项?,php,html,string,Php,Html,String,如何替换此字符串中的最后一个li元素 之前: $var = '<li>anything<li/> <li>anything<li/> <li>anything<li/> <li>anything<li/> <li>anything<li/>'; 但这不是预期的产出。如何更改代码以获得预期的输出?这应该适用于您: (这里我只是将字符串拆分
li
元素
之前:
$var =
'<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li>anything<li/>';
但这不是预期的产出。如何更改代码以获得预期的输出?这应该适用于您: (这里我只是将字符串拆分为一个数组,然后将最后一个元素替换为一个字符串。顺便说一句:您错误地关闭了li标记)
$var=
“任何东西
任何
任何
任何
任何 ”;
$pos=strrpos($var,“”);
echo$final=substr\u replace($var, anything ,$pos);
我也想到了这个解决方案,但是不能用regex
?@D4V1D当然可以用regex来完成。你也可以使用DOM,如果他有更多类似的事情要做,这可能是最好的。但你为什么要把它复杂化?!我不是在寻找复杂的解决方案,而是最干净的:)此外,OP想要的是任何东西 ,而不是
。我还假设任何东西都可以是任何单词。您的解决方案仍然有效吗?@D4V1D感谢您的通知,在问题中错过了这一点,只是更新了itword anything==文本、数字、空、所有内容。。。。我事先不知道会有什么变化。如果有什么变化,你可以这样做:$replace=substr($var,$pos+4)$replace=substr($replace,0,strlen($replace)-5)代码>,而不是echo$final=substr\u replace($var,anything ,$pos)代码>do<代码>echo$final=substr\u replace($var,$replace,$pos)代码>。一般来说,strpos和substr函数的性能比explode/intlode或regex函数更好
$var =
'<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li class="foo">anything<li/>';
preg_replace('<li>', '<li class="foo">', $var);
<?php
$var =
'<li>anything</li>
<li>anything</li>
<li>anything</li>
<li>anything</li>
<li>anything</li>';
$var = explode(PHP_EOL, $var);
$var[count($var)-1] = preg_replace("/<li.*?>(.*?)<\/li>/", "<li class='foo'>$1</li>", $var[count($var)-1]);
$var = implode(PHP_EOL, $var);
print_r($var);
?>
<li>anything</li>
<li>anything</li>
<li>anything</li>
<li>anything</li>
<li class='foo'>anything</li>
$var =
"<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li>anything<li/>
<li>anything<li/>";
$pos=strrpos($var,"<li>");
echo $final=substr_replace($var, '<li class="foo">anything<li/>',$pos);