Чтобы ваш код работал, вам просто нужно добавить флаг u
в регулярное выражение, чтобы он соответствовал символам Юникода:
preg_match('/^\w+/iu', $sentence, $result);
echo "\nThe first word of string is: ".$result[0];
Вывод:
The first word of string is: 練馬春日町Ⅳ
Обратите внимание, что так как вам нужно первое слово, вы можете просто привязать свое регулярное выражение с помощью ^
, а второе \b
не требуется, поскольку \w+
будет соответствовать как можно большему числу символов слова, т. е. до тех пор, пока оно не достигнет первого разрыва слова.
В качестве альтернативы вы можете использовать mb_split
с регулярным выражением \p{Z}
, которое соответствует любому пробелу в Unicode или невидимому разделителю:
$sentence = '練馬春日町Ⅳ 清掃レポート.pdf';
$first_word = mb_split('\p{Z}', $sentence);
echo $first_word[0];
Вывод:
練馬春日町Ⅳ
Демонстрация на 3v4l.org