Minecraftクライアントは、次の形式でメッセージに色を付けます。§6ゴールドテキスト
ここで、§はカラーコードの先頭とそれに続く文字([0-9A-FK-OR])を示します。preg_replaceを使用してこれらすべてを文字列から削除する方法はありますか?
(?i)§[0-9A-FK-OR]
使用する
$s = preg_replace('/\xA7[0-9A-FK-OR]+/i', '', $s);
一部の単語では機能しません。それは多くに剥ぎ取ります。これを試して...
$s = preg_replace('/\xA7[0-9A-FK-OR]/i', '', $s);
これにより、カラーコードが削除されます。
$motd = preg_replace('/\xa7./','',$motd);
おそらく、0xc2文字を削除することもできます。
$motd = preg_replace('/\xc2|\xa7./','',$motd)
しかし、サーバーは悪意のある文字列を含むあらゆるものを送信できるため、これはより良いでしょう:
$motd = preg_replace('/\xa7./','',$motd);
$motd = filter_var($motd,FILTER_SANITIZE_SPECIAL_CHARS,FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);