[英]Get first 3 words from non English string in php
我想在php中使用非英語字符串中的前三個單詞。 例如:
এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই
我發現英文文本有可能:
$phrase = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 3));
但它不適用於我的非英語(bengali)文本。 有人能告訴我怎么辦?
使用explode
和內implode
1)按空間explode
字符串
2)使用array_slice
獲取前三個切片
3)再次用空間implode
它
<?php
$string = 'এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই';
$array = array_slice(explode(" ",$string),0,3);
echo implode(" ",$array)."<br>";
?>
你可以使用explode
, array_slice
和implode
:
$string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই";
$parts = explode(" ", $string);
$x = array_slice($parts, 0, 3);
print implode(" ", $x);
# এখানে কিংকর্তব্যবিমূঢ় হবার
你沒有提到你正在使用的PHP版本,但PHP和UTF的主要痛苦在於它有時不能一起工作,因為許多字符串操作方法主要基於假設“1 char = 1 byte”。 MBString擴展在很多情況下解決了這個問題,但並不是所有情 在您的情況下, str_word_count()
需要替換為多字節感知對應物,即mb_split()
:
echo implode(' ', array_slice(mb_split("\s", $phrase), 0, 3));
在這里,您可以使用正則表達式的強大功能:
^(?:\b\p{Bengali}+\s*){3}
請參閱regex101.com上的演示 。
PHP
中將是:
<?php $string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই"; $regex = '~^(?:\\b\\p{Bengali}+\\s*){3}~u'; if (preg_match($regex, $string, $match)) { echo $match[0]; } # এখানে কিংকর্তব্যবিমূঢ় হবার ?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.