我有下面的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的第三个参数
但这意味着你有一个定义的编码风格,比如在"<和'/'表示结束标记。
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昨天
感谢