php только первое слово из строки мб - PullRequest
0 голосов
/ 19 февраля 2020

Я использовал preg_match, но он возвращает pdf, так как он Engli sh, поэтому может быть и так.

Но я хочу получить только 馬 馬 春日 町 Ⅳ

Есть ли способ обнаружить его для строки mb.

<?php 
// Initialize a sentence to a variable 
$sentence = '練馬春日町Ⅳ 清掃レポート.pdf'; 

// Use preg_match() function to get the 
// first word of a string 
preg_match('/\b\w+\b/i', $sentence, $result);  

// Display result 
echo "The first word of string is: ".$result[0]; 

?>

FIDDLE

1 Ответ

1 голос
/ 19 февраля 2020

Чтобы ваш код работал, вам просто нужно добавить флаг 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

...