2015-07-12 104 views
1

我的语言是越南语,所以我在从相关关键字中获取确切单词时遇到问题。我有一个字符串和一个关键字:如何用相关的关键字获取字符串中的单词?

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

如何使用$mykeyword摆脱$mystringtừ khóa b

谢谢!

+1

你可以试试这个答案在这里 http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet –

回答

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" 

然而,正如你所看到的,没正确翻译。

+0

为什么我看到_“**致命错误** :调用未定义的函数transliterator_transliterate()在** C:\ xampp \ htdocs \ ... \ index.php ** ** ** ** ** ** ** ** – 5ervant

+0

因为你需要'intl'模块:)请参阅[这里](https://stackoverflow.com/questions/23431788/how-to-install-intl-php-extension-with-wamp-server)了解如何启用它在WAMP上。 – Will

+0

您是否认为该模块已安装在大多数共享网络主机上? – 5ervant