【问题标题】:How to get a word in string with relevant keyword?如何获取具有相关关键字的字符串中的单词?
【发布时间】:2015-09-30 17:05:21
【问题描述】:

我的语言是越南语,所以我无法从相关关键字中获取确切的单词。我有一个字符串和一个关键字:

$mystring = "từ khóa a,từ khóa b, từ khóa c";
$mykeyword = "tu khoa b";

如何使用$mykeyword$mystring 获取từ khóa b

谢谢!

【问题讨论】:

标签: php


【解决方案1】:

我相信你想做的就是 UTF-8 规范化。

This post 解释了一些基础。试试这个:

php > $mystring = "từ khóa a,từ khóa b, từ khóa c";
php > $mykeyword = "tu khoa b";
php > var_dump(transliterator_transliterate('Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove', $mystring));
string(30) "tu khoa a,tu khoa b, tu khoa c"
php >

现在,您可以使用普通的字符串操作函数来查看$mykeyword 是否包含在$mystring 中。请注意,没有 ASCII 翻译的字符将被删除。

请注意,要使其工作,您需要安装 PHP intl 模块(通常是一个名为 php5-intl 的包)。见here

您还可以使用Normalizerpreg_replace() 去除重音符号:

php > var_dump(preg_replace('/\p{Mn}/u', '', Normalizer::normalize($mystring, Normalizer::FORM_KD)));
string(30) "tu khoa a,tu khoa b, tu khoa c"
php >

还有一种方法是使用iconv():

php > var_dump(preg_replace('/[^a-zA-Z0-9 -]+/', '', iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $mystring)));
string(25) "t khoa at khoa b t khoa c"

但是,如您所见, 没有正确翻译。

【讨论】:

  • 为什么我会看到 "致命错误:在 C:\xampp\htdocs\...\index 中调用未定义的函数 transliterator_transliterate() .php 在第 5 行“ 测试时?
  • 因为您需要 intl 模块 :) 请参阅 here 了解如何在 WAMP 上启用它。
  • 您认为该模块已安装在大多数共享网络主机上吗?
  • 很有可能。它是标准 PHP 发行版的一部分。如果不是,出于某种原因,您应该能够让他们安装它。我添加了另一种没有intl 的方法,它应该适用于任何 PHP 5.3.0+ 安装。
  • 你是如何安装 PHP 的?这可能就像安装 php5-intl 一样简单,或者在最坏的情况下运行 pecl install intl
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2016-09-25
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多