我有以下用小写字母替换大写 HTML 标记。
$output = preg_replace("%<(/?[A-Z].*?)>%s",strtolower('$1'),$output);
匹配似乎运行良好(在我的 RegEx 测试站点中),但替换不是。
<EM>TEST</EM> becomes EMTEST/EM
希望有人能指出我正确的方向。
您正在调用strtolower
,"$1"
然后使用结果(又是$1
一次)来替换。
相反,使用preg_replace_callback
并让回调为:function($m) {return strtolower($m[0]);}
$output = preg_replace("%<(/?[A-Z].*?)>%se", "'<' . strtolower('\\1') . '>'",$output);
编辑:忘了提到你不应该使用HTMLpreg
东西 :) DOMDocument 是一个更好的选择。