PHP Regex-用完全关闭替换所有自动关闭标签

时间:2018-07-17 12:26:07

标签: php regex

是否可以使用诸如preg_replace之类的东西将HTML字符串中的所有自闭合标签自动转换为完全闭合的字符串。

例如将<img src="" />改成<img src=""></img>

我已经有效地尝试做类似的事情

  1. 为开始标签创建捕获组,例如<(\w+)
  2. 为结束标签创建捕获组,例如(\/\>)
  3. 用捕获组1的内容替换捕获组2的内容,例如</$0>

我们正在使用的一个真正的html / xml是

 <li class="w-1/3 mb-0 py-3 text-sm-2 text-center font-light leading-tight">
                    <div class="border-r border-grey-light">
                        <a href="tel:00000000"><span class="inline-block mr-1 relative header-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path fill="#424B51" d="M11.945 9.567l-.063-.182c-.14-.422-.599-.858-1.026-.977L9.277 7.98c-.427-.116-1.037.04-1.348.355l-.575.57A6.05 6.05 0 0 1 3.1 4.643l.568-.57c.31-.313.467-.922.354-1.352L3.59 1.148C3.475.719 3.034.258 2.618.113l-.18-.057C2.019-.088 1.413.057 1.106.37l-.86.854c-.148.152-.245.583-.245.585a10.058 10.058 0 0 0 2.95 7.238A10.073 10.073 0 0 0 10.162 12c.017 0 .462-.098.617-.25l.852-.853c.315-.312.454-.912.315-1.33z"/></svg></span> <span>Call</span></a>
                    </div>
                </li>

1 个答案:

答案 0 :(得分:2)

我已经尝试过了

preg_replace("/<(path|img|xml)(.*?)\/>/", "<$1$2></$1>", $input_lines);