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

时间:2012-07-30 00:51:23

标签: php html tags

我有以下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>'

任何想法如何做到这一点?我认为这需要一些正则表达式功能。

由于

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

  • 匹配'&lt;'时计数器变为+1;
  • 当匹配'/'然后匹配'&gt;'时,计数器变为-1
  • 匹配'&lt;'时然后是'/',计数器变为-1。如果计数器为0,则等待下一个'&gt;'并添加addTagsToNakedTex的第二个参数。一旦达到1,那么在addTagsToNakedTex的第三个参数之前添加一个char。

但这意味着你有一个明确的编码风格,比如'&lt;'之间的空格。和'/'表示关闭标签。

答案 2 :(得分:0)

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 >');

答案 3 :(得分:0)

归功于:

强制性回答链接:stackoverflow.com/questions/1732348 / ... - 昨天的SimpleCoder

由于