preg_replace()
マルチバイトセーフな方法で作成するには、を使用する必要があります。
$str = preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', $str);
注:
- これにより、初期の @Андрей-Сердюк の問題が修正されます。Unicode の非改行スペースにも一致する
\u00a0
ため、 トリムされます。\s
/u
修飾子 (PCRE_UTF8) は、PCRE に件名を UTF8 文字列として処理するように指示します。
\x00
trim()
null バイト文字に一致して、デフォルトの関数の動作を模倣します
受け入れられた@Андрей-Сердюкのtrim()
回答は、マルチバイト文字列を台無しにします。
例:
// This works:
echo trim(' Hello ', ' '.chr(0xC2).chr(0xA0));
// > "Hello"
// And this doesn't work:
echo trim(' Solidarietà ', ' '.chr(0xC2).chr(0xA0));
// > "Solidariet?" -- invalid UTF8 character sequense
// This works for both single-byte and multi-byte sequenses:
echo preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', ' Hello ');
// > "Hello"
echo preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', ' Solidarietà ');
// > "Solidarietà"