我有以下内容用大写的HTML标签替换大写的HTML标签。
$output = preg_replace("%<(/?[A-Z].*?)>%s",strtolower('$1'),$output);
匹配似乎运行良好(在我的RegEx测试站点中),但替换不是。
<EM>TEST</EM> becomes EMTEST/EM
希望有人能指出我正确的方向。
答案 0 :(得分:3)
您正在strtolower
上呼叫"$1"
,然后使用结果(再次只是$1
)来替换。
相反,请使用preg_replace_callback
并将回调设为:function($m) {return strtolower($m[0]);}
答案 1 :(得分:1)
$output = preg_replace("%<(/?[A-Z].*?)>%se", "'<' . strtolower('\\1') . '>'",$output);
编辑:忘了提及你应该不使用preg
来获取HTML东西:) DOMDocument是一个更好的选择。