我想从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)文本不起作用。有人能告诉我怎么办?
答案 0 :(得分:1)
使用explode
和implode
1)explode
空格字符串
2)使用array_slice
3)再次implode
空间
<?php
$string = 'এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই';
$array = array_slice(explode(" ",$string),0,3);
echo implode(" ",$array)."<br>";
?>
答案 1 :(得分:1)
您可以使用explode
,array_slice
和implode
:
$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}
<小时/>
PHP
中的内容是:
<?php
$string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই";
$regex = '~^(?:\b\p{Bengali}+\s*){3}~u';
if (preg_match($regex, $string, $match)) {
echo $match[0];
}
# এখানে কিংকর্তব্যবিমূঢ় হবার
?>