php – 如何检测并回显单词中的最后一个元音?
作者:互联网
$word = "Acrobat" (or Apple, Tea etc.)
如何用php检测并回显给定单词的最后一个元音?我尝试了preg_match功能,google了几个小时但找不到合适的解决方案.
字符串中可以有多字节字母,如ü,ö.
解决方法:
这是一个捕获字符串中最后一个元音的多字节安全版本.
$arr = array(
'Apple','Tea','Strng','queue',
'asartä','nő','ağır','NOËL','gør','æsc'
);
/* these are the ones I found in character viewer
in Mac so these vowels can be extended. don't
forget to add both lower and upper case versions
of new ones because personally I wouldn't rely
on the i (case insensitive) flag in the pattern
for multibyte characters.
*/
$vowels =
'aàáâãāăȧäảåǎȁąạḁẚầấẫẩằắẵẳǡǟǻậặæǽǣ' .
'AÀÁÂÃĀĂȦÄẢÅǍȀȂĄẠḀẦẤẪẨẰẮẴẲǠǞǺẬẶÆǼǢ' .
'EÈÉÊẼĒĔĖËẺĚȄȆẸȨĘḘḚỀẾỄỂḔḖỆḜ' .
'eèéêẽēĕėëẻěȅȇẹȩęḙḛềếễểḕḗệḝ' .
'IÌÍÎĨĪĬİÏỈǏỊĮȈȊḬḮ' .
'iìíîĩīĭıïỉǐịįȉȋḭḯ' .
'OÒÓÔÕŌŎȮÖỎŐǑȌȎƠǪỌØỒỐỖỔȰȪȬṌṐṒỜỚỠỞỢǬỘǾŒ' .
'oòóôõōŏȯöỏőǒȍȏơǫọøồốỗổȱȫȭṍṏṑṓờớỡởợǭộǿœ' .
'UÙÚÛŨŪŬÜỦŮŰǓȔȖƯỤṲŲṶṴṸṺǛǗǕǙỪỨỮỬỰ' .
'uùúûũūŭüủůűǔȕȗưụṳųṷṵṹṻǖǜǘǖǚừứữửự'
;
// set necessary encodings
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
// and loop
foreach ($arr as $word) {
$vow = mb_ereg_replace('[^'.$vowels.']','',$word);
// get rid of all consonants (non-vowels in this pattern)
$lastVw = mb_substr($vow,-1);
// and get the last one from the remaining vowels
if (empty($lastVw))
// it evaluates this line when there's no vowel in the string
echo "there's no vowel in <b>\"$word\"</b>." . PHP_EOL;
else
// and vice versa
echo "last vowel in <b>\"$word\"</b> is " .
"<span style=\"color:#F00\">{$lastVw}</span>" . PHP_EOL;
}
这是输出.
last vowel in “Apple” is e
last vowel in “Tea” is a
there’s no vowel in “Strng”.
last vowel in “queue” is e
last vowel in “asartä” is ä
last vowel in “nő” is ő
last vowel in “ağır” is ı
last vowel in “NOËL” is Ë
last vowel in “gør” is ø
last vowel in “æsc” is æ
标签:detect,php,multibyte 来源: https://codeday.me/bug/20191007/1866076.html