2017-04-19 102 views
1

我希望在php中使用非英文字符串的前3個單詞。例如:在php中獲取非英文字符串的前3個單詞在php中

এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই 

我發現它是可能的英文文本爲:

$phrase = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'; 
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 3)); 

但它並不適用於我的非英語(孟加拉)文本。有人能告訴我我該怎麼做?

+3

你究竟是什麼意思*「不起作用」*? – CD001

回答

1

使用explodeimplode

1)explode字符串通過使用array_slice

3空間

2)得到的前三個切片)再次implode它與空間

<?php 

    $string = 'এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই'; 
    $array = array_slice(explode(" ",$string),0,3); 

    echo implode(" ",$array)."<br>"; 

    ?> 
1

您可以使用explode,array_sliceimplode此:

$string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই"; 
$parts = explode(" ", $string); 
$x = array_slice($parts, 0, 3); 
print implode(" ", $x); 
# এখানে কিংকর্তব্যবিমূঢ় হবার 
1

你沒有提到你使用的是什麼版本的PHP,但PHP和UTF主痛苦的是,它有時不在一起,因爲許多字符串操作方法的工作是/是主要基於以下假設: 「1個字符= 1個字節」。 MBString擴展在很多情況下解決了這個問題,但並非到處都是。你的情況str_word_count()需要與多字節意識到對方所取代,即mb_split()

echo implode(' ', array_slice(mb_split("\s", $phrase), 0, 3)); 
0

同樣在這裏,你可以使用正則表達式的威力:

^(?:\b\p{Bengali}+\s*){3} 

a demo on regex101.com


其中在 PHP是:

<?php 
$string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই"; 
$regex = '~^(?:\b\p{Bengali}+\s*){3}~u'; 
if (preg_match($regex, $string, $match)) { 
    echo $match[0]; 
} 

# এখানে কিংকর্তব্যবিমূঢ় হবার 
?> 

a demo on ideone.com

+0

感謝您的幫助。我以前的回答已經完成了。 – StreetCoder

+0

@StreetCoder:沒關係,但是這對你來說還能工作嗎? – Jan

+0

我已經檢查過它。這是行不通的。 – StreetCoder

相關問題