0

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

4 回答 4

0

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

另一种技巧是编写一个简单的解析器来执行标签平衡并知道何时换行。同样,这是给读者的练习。

于 2012-07-30T00:59:50.517 回答
0

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

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

但这意味着您具有已定义的编码样式,例如在“<”和“/”之间没有空格用于结束标记。

于 2012-07-30T01:08:27.247 回答
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 >');
于 2012-07-30T01:13:38.413 回答
0

归功于:

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

谢谢

于 2012-07-31T15:13:48.600 回答