首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中从非英语字符串中获取前3个单词

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

Stack Overflow用户
提问于 2017-04-19 09:36:21
回答 4查看 71关注 0票数 1

我要前三个字从一个非英文字串在php中。例如:

代码语言:javascript
复制
এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই

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

代码语言:javascript
复制
$phrase = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 3));

但这不适用于我的非英语(孟加拉语)文本。有人能告诉我怎么做吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-19 09:45:05

使用explode和implode

1) explode字符串按空格排列

2)使用array_slice获取前三片

3)再一次使用空间implode

代码语言:javascript
复制
<?php

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

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

  ?>
票数 1
EN

Stack Overflow用户

发布于 2017-04-19 09:45:56

为此,可以使用explode、array_slice和implode:

代码语言:javascript
复制
$string = "এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই";
$parts = explode(" ", $string);
$x = array_slice($parts, 0, 3);
print implode(" ", $x);
# এখানে কিংকর্তব্যবিমূঢ় হবার
票数 1
EN

Stack Overflow用户

发布于 2017-04-19 09:46:02

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

代码语言:javascript
复制
echo implode(' ', array_slice(mb_split("\s", $phrase), 0, 3));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43491816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档