このコードがありますが、PHP でUnknown modifier '?'
エラーが発生します。
誰が私が間違ったことを知っていますか? (正規表現に慣れていないため、インターネットでコードを見つけました)
$old = "<FONT></FONT><P></P><TR></TR>";
$newString = preg_replace("/</?\w+/e/", "strtolower('\\0')", $old);
echo $newString ."<br/>";
このコードがありますが、PHP でUnknown modifier '?'
エラーが発生します。
誰が私が間違ったことを知っていますか? (正規表現に慣れていないため、インターネットでコードを見つけました)
$old = "<FONT></FONT><P></P><TR></TR>";
$newString = preg_replace("/</?\w+/e/", "strtolower('\\0')", $old);
echo $newString ."<br/>";
PHP 5.4以前:
$old = "<FONT></FONT><P id='P1'></P><TR></TR>";
$newString = preg_replace("/(<\/?\w+)(.*?>)/e", "strtolower('\\1') . '\\2'", $old);
echo $newString ."<br/>";
e
修飾子はPHP 5.5.0で非推奨になりました。代わりに次を使用してください。preg_replace_callback
$old = "<FONT></FONT><P id='P1'></P><TR></TR>";
$newString = preg_replace_callback("/(<\/?\w+)(.*?>)/", function ($m) {
return strtolower($m[1]) . $m[2]; }, $old);
echo $newString ."<br/>";
出力:
<font></font><p id='P1'></p><tr></tr><br/>
htmlを解析するために正規表現を使用または推奨していませんが、ここにいくつかの間違いがあります。
/
ため、正規表現でエスケープするか、別の区切り文字を使用する必要があります。/
最後に、そこにあるべきではない余分なものがあります。したがって、コードはおそらく(別の区切り文字を使用して)次のようになります。
$newString = preg_replace("#</?\w+#e", "strtolower('\\0')", $old);
</?\w+>
小文字を適用した後、正規表現をそれ自体に置き換えます
これはあなたが探しているものですか?
後世のために: このコードは、属性のコメントと<!CDATA[[]]!>
<?php
function lowerTags($matches) {
return strtolower($matches[1]);
}
$old = "<!--BLAH--><FONT COLOR='BLACK'>extra textCAPITALIZED</FONT><P></P><TR></TR>";
echo preg_replace_callback("/(<\/?[^!][^>]+)/", 'lowerTags', $old);