在PHP中从非英语字符串中获取前3个单词

时间:2017-04-19 09:36:21

标签: php

我想从php中的非英语字符串中输入前3个单词。例如:

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

我发现英文文本有可能为:

<div class="custom_dd_select">
    <span>
  <a>Acura</a></span>
</div>

但它对我的非英语(bengali)文本不起作用。有人能告诉我怎么办?

4 个答案:

答案 0 :(得分:1)

使用explodeimplode

1)explode空格字符串

2)使用array_slice

获取前三个切片

3)再次implode空间

<?php

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

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

  ?>

答案 1 :(得分:1)

您可以使用explodearray_sliceimplode

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

答案 2 :(得分:1)

你没有提到你正在使用的PHP版本,但PHP和UTF的主要痛苦在于它有时不能一起工作,因为许多字符串操作方法主要基于假设“1 char = 1 byte”。 MBString扩展在很多情况下解决了这个问题,但并不是所有情在您的情况下,str_word_count()需要替换为多字节感知对应方,即mb_split()

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

答案 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