使用php在元素内的裸文本周围添加html标记


add html tags around naked text inside an element using php

我有下面的html字符串示例。我想在裸文本周围添加标签:

$html='<span>text1</span>  text2   <a href="yahoo.com">yeahoo</a>   text4   <div>abc</div>  xyz';

假设html格式正确,我想在text2、text4和xyz周围添加一个标签(例如)。

我设想一个简单的函数,称为:$resHtml=addTagsToNakedText($html,'<span>','</span>');

最终结果应该是:

'<span>text1</span><span>  text2   </span><a href="yahoo.com">yeahoo</a><span>   text4   </span><div>abc</div><span>  xyz</span>'

有什么办法吗?我认为这需要一些正则表达式功能。

感谢

您最好的选择是将字符串解析为可以使用DOM函数操作的HTML片段。如何做到这一点是留给读者的练习。

另一种破解方法是编写一个简单的解析器,它可以执行标记平衡并知道何时包装文本。同样,这是读者的练习。

另一个有趣的练习是解析文件中的每个字符,取消计数器。

  • 匹配'<'时计数器为+1
  • 当匹配'/'然后匹配'>'时,计数器变为-1
  • 匹配'<'时然后一个"/",计数器变为-1。如果计数器为0,则等待下一个'>'并添加addTagsToNakedTex的第二个参数。一旦它达到1,那么您就在前面添加一个字符,即addTagsToNakedTex的第三个参数

但这意味着你有一个定义的编码风格,比如在"&lt和'/'表示结束标记。

function tags($tag_open, $text, $tag_close) {<br />
   return $tag_open.$text.$tag_close;<br />
}
$output_string = tags('< span >', 'Enter some text in here..', '< / span >');

信用转到:

强制性答案链接:stackoverflow.com/questions/1732348/…–SimpleCoder昨天

感谢