簡體   English   中英

在PHP中從非英語字符串中獲取前3個單詞

[英]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>";

  ?>

你可以使用explodearray_sliceimplode

$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]; } # এখানে কিংকর্তব্যবিমূঢ় হবার ?> 

在ideone.com上觀看演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM