2017-04-19 7 views
1

PHPの非英語の文字列から最初の3単語が必要です。たとえば:PHPで英語以外の文字列の最初の3文字を取得する

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

私はそれのように英語のテキストが可能です発見した:

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

しかし、それは私の非英語(ベンガル語)のテキストでは動作しません。誰かが私にそれをどうすればいいのか教えてもらえますか?再度使用explode

+3

*「動作しません」*と正確にはどういう意味ですか? – CD001

答えて

1

implode

1)explodearray_slice

3を用いて空間

2)最初の三つのスライスを取得して文字列)implodeそれ空間

<?php 

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

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

    ?> 
1

explode,array_slice、0を使用できますあなたが使用しているPHPのバージョンは言及しませんが、PHPやUTFメイン痛みはほとんど仮定に基づいていた多くの文字列操作方法は/あるとして、それは時々一緒に動作しないということである

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

:このため"1 char = 1バイト"。 MBString拡張は多くの場合、これを扱いますが、どこにもありません。マルチバイト意識の対応、すなわちmb_split()に置き換える必要がありstr_word_count()あなたのケースでは:だけでなく

ここ
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

関連する問題