将最后一个类替换为 php
$list = '<ul>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
</ul>';
如何将最后一个
的班级从“女人”替换为“男人”?我们最终应该得到:
$list = '<ul>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="man">photo</li>
</ul>';
$list = '<ul>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
</ul>';
How do I replace last <li>
's class from 'woman' to 'man'?
We should get finally:
$list = '<ul>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="woman">photo</li>
<li class="man">photo</li>
</ul>';
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用正则表达式(默认情况下是贪婪的),这非常简单:
这不会考虑该类可能位于 LI 标记之外的其他内容上,或者如果最后一个 LI 标记没有类。要修复第一个,您只需更改正则表达式即可:
要修复最后一个:
With a regular expression (which is greedy by default), it is quite easy:
That won't take into account that the class might be on something other than an LI tag or if the last LI tag has no class. To fix the first, you can simply change the regex:
To fix the last:
两种选择:
使用正则表达式并根据您的需要制定正则表达式。例如,用不同的值替换最后一个 li 块类属性。
$list = preg_replace('#^(.*
.*
.*)$#s', '$1man $3', $list);
从片段生成一个 DOM 树,并使用 xpath 来定位最后一个 li 元素。 (DOM - 文档
Two options:
Use regular expressions and formulate the regular expression according to your needs. E.g. replace the last li blocks class attribute with a different value.
$list = preg_replace('#^(.*<li class=")(.*)(">.*</li>.*)$#s', '$1man$3', $list);
Generate a DOM-Tree from the fragment and use xpath to adress the last li element. (DOM - documentation
尝试:
我认为这是迄今为止执行该技巧的最简单方法,根本不需要正则表达式!
Try:
I think this is, by far, the simplest way to perform the trick, and no regexp needed at all!
找不到合适的重复项,因此这是 DOM 解决方案:
http://codepad.org/6MVEytcp
如果您的标记不符合 XML,或者如果它是完整的 html 页面,请考虑使用
loadHTML
来使用 libxml 的 HTML 解析器模块。在这种情况下,请在 StackOverflow 上搜索或通过我的答案进行搜索。有很多例子。Couldn't find a suitable duplicate, so here is the DOM solution:
http://codepad.org/6MVEytcp
If your markup is not XML compliant or if its a full html page consider using
loadHTML
to use libxml's HTML parser module. In that case, search around on StackOverflow or through my answers. There is plenty examples.