【问题标题】:Finding all spaces in html tags with one regular expression用一个正则表达式查找 html 标签中的所有空格
【发布时间】:2013-01-16 11:43:43
【问题描述】:

我有一个用户生成的 HTML 有效文本,我需要在其中查找和替换 inside html 标记的所有空格。请不要问我为什么,我只是在寻找能够找到 HTML 标签的<> 之间所有空格的正则表达式。

【问题讨论】:

  • 规则 1) 从不使用 RegEx 解析 HTML。规则 2) 如果您想使用 RegEx 解析 HTML,请参阅规则 1。
  • 另见this
  • 不会把<a href="foo"> 变成<ahref="foo"> 并破坏它吗?
  • 如果你这样做,你会破坏你的 html。
  • 为了公平对待 Sander,@Quentin,还没有说这些空间会发生什么,但这是合乎逻辑的结论

标签: html regex tags


【解决方案1】:

这可以通过回调函数来完成。 PHP 示例(版本 >= 5.3)

echo preg_replace_callback(
    '~<(.*?)>~s', 
    function ($match) {
        return '<' . str_replace(' ', 'your_replacement', $match[1]) . '>';
    },
    $str
);

【讨论】:

    【解决方案2】:

    我建议你永远不要使用 Regex 来解析 HTML。

    查看HTMLAgilityPackHtml Agility Pack

    【讨论】:

      【解决方案3】:

      在等待正则表达式解决方案时,我创建了以下爆炸内爆解决方案:

      $tags_split_array = explode("<", $htmltext);
      foreach($tags_split_array as $key => $tagpart) {
          $tagpart_array = explode(">", $tagpart);
          $tagpart_array[0] = str_replace(" ", "ψ", $tagpart_array[0]);
          $tags_split_array[$key] = implode(">", $tagpart_array);
      }
      $htmltext= implode("<", $tags_split_array);
      

      但正则表达式解决方案仍然要好得多,所以我将使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 2020-12-15
        • 1970-01-01
        相关资源
        最近更新 更多