【问题标题】:add html tags around naked text inside an element using php使用php在元素内的裸文本周围添加html标签
【发布时间】:2012-07-31 23:13:48
【问题描述】:

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

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

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

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

最终结果应该是:

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

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

谢谢

【问题讨论】:

标签: php html tags


【解决方案1】:

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

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

【讨论】:

  • 我知道解析是我最好的选择。我希望这里有一些天才可以指导我使用一些聪明的正则表达式来做到这一点。我想也许 tidy 可以做到,但看不到选项。
【解决方案2】:

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

  • 匹配“
  • 匹配“/”然后匹配“>”时,计数器变为 -1
  • 当匹配一个 '' 并添加 addTagsToNakedTex 的第二个参数。一旦它变为 1,则在 addTagsToNakedTex 的第三个参数前添加一个字符。

但这意味着你有一个定义的编码风格,比如在结束标签的“

【讨论】:

    【解决方案3】:
    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 >');
    

    【讨论】:

      【解决方案4】:

      功劳归于:

      必填答案链接:stackoverflow.com/questions/1732348/… – SimpleCoder 昨天

      谢谢

      【讨论】:

        猜你喜欢
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 2014-10-27
        • 2020-08-06
        • 2016-01-28
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        相关资源
        最近更新 更多