php-查找并替换可能部分位于html标记内的字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-查找并替换可能部分位于html标记内的字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3259字,纯文字阅读大概需要5分钟。
内容图文
任何人都可以提出以下解决方案.
例如,我有一串文字“ Suspendisse potenti”.
我需要搜索一些html字符串并将其包装在span标签中:
以便
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
scelerisque neque in eros convallis egestas. Phasellus lacus massa,
laoreet cursus scelerisque id, posuere ac mauris. In hac habitasse
platea dictumst. Aenean eros dui, congue ut ultrices vitae, convallis
quis felis. Ut non ante non nunc tempus ultrices et et ipsum.
Suspendisse potenti. In sed mauris vel nibh dapibus
pellentesque eu id dolor. Morbi dictum quam eleifend ante mattis rutrum.
Mauris nisl ligula, consectetur eget gravida vel, varius vel metus.
Nullam a ante metus.</p>
会成为
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
scelerisque neque in eros convallis egestas. Phasellus lacus massa,
laoreet cursus scelerisque id, posuere ac mauris. In hac habitasse
platea dictumst. Aenean eros dui, congue ut ultrices vitae, convallis
quis felis. Ut non ante non nunc tempus ultrices et et ipsum.
<span class="search-match" id="search-term-0">Suspendisse potenti</span>.
In sed mauris vel nibh dapibus pellentesque eu id dolor. Morbi dictum
quam eleifend ante mattis rutrum. Mauris nisl ligula, consectetur eget
gravida vel, varius vel metus. Nullam a ante metus.</p>
我正在使用以下方法工作:$text = preg_replace_callback(‘/(‘.preg_quote($searchTerm,’/’).’*)/’,“ Search :: addSearchId”,$text);
我的问题是,当我正在搜索的文本中的字符串的一部分位于html标记中时.
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
scelerisque neque in eros convallis egestas. Phasellus lacus massa,
laoreet cursus scelerisque id, posuere ac mauris. In hac habitasse
platea dictumst. Aenean eros dui, congue ut ultrices vitae, convallis
quis felis. Ut non ante non nunc tempus ultrices et et ipsum.
Suspendisse <a href="/link">potenti</a>. In sed mauris vel nibh dapibus
pellentesque eu id dolor. Morbi dictum quam eleifend ante mattis rutrum.
Mauris nisl ligula, consectetur eget gravida vel, varius vel metus.
Nullam a ante metus.</p>
或在标签内加上搜索字词和其他文字
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
scelerisque neque in eros convallis egestas. Phasellus lacus massa,
laoreet cursus scelerisque id, posuere ac mauris. In hac habitasse
platea dictumst. Aenean eros dui, congue ut ultrices vitae, convallis
quis felis. Ut non ante non nunc tempus ultrices et et ipsum.
Suspendisse <a href="/link">potenti In sed</a> mauris vel nibh dapibus
pellentesque eu id dolor. Morbi dictum quam eleifend ante mattis rutrum.
Mauris nisl ligula, consectetur eget gravida vel, varius vel metus.
Nullam a ante metus.</p>
很显然,这会丢失文本,因为它只搜索没有任何标签的纯字符串.
有人有任何方便的正则表达式可以匹配纯字符串以及带有html的字符串吗?
这是在被搜索页面引用后在页面顶部创建一些锚点,我想突出显示搜索词,因此需要包装整个字符串.
解决方法:
尝试这个
$result = preg_replace_callback('%\b(Suspendisse potenti)(?!</\w+)\b%im', 'compute_replacement', $subject);
function compute_replacement($groups) {
// You can vary the replacement text for each match on-the-fly
// $groups[0] holds the regex match
// $groups[n] holds the match for capturing group n
return '<span>$1</span>';
}
内容总结
以上是互联网集市为您收集整理的php-查找并替换可能部分位于html标记内的字符串全部内容,希望文章能够帮你解决php-查找并替换可能部分位于html标记内的字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。