使用 php 检查 url 是否包含特定的非拉丁词(例如希腊语)



我使用以下代码来检查URL是否包含特定单词(例如foobar(:

<?php $geturl = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>
<?php if (strpos($geturl, 'foobar') == true) {   
//Do something here
} ?>

这几乎是完美的,但是如果我尝试搜索一个希腊词(例如καλημέρα(

<?php if (strpos($geturl, 'καλημέρα') == true) {   
//Do something here
} ?>

那就行不通了。我也尝试使用mb_strpos,但也没有用。我怎样才能让它工作?

更新:如果我尝试用<?php echo $geturl; ?>回显保存的网址,我会得到这个:

/myserver/%CE%BA%CE%B1%CE%BB%CE%B7%CE%BC%CE%AD%CF%81%CE%B1 

相反,它应该是这样的:

/myserver/καλημέρα

在这种情况下,preg_match可以为您完成这项工作。您需要匹配不在默认字符集中的任何内容。在这种情况下,我假设希腊字符不在 ASCII 中。

根据Karolis的这个答案,你可以尝试使用以下方法:

if(preg_match('/[^x20-x7e]/', $string))

这是不正确

if (strpos($geturl, 'foobar') == true) ..

您必须使用

if( strpos($geturl, 'καλημέρα') !== false){
//do
}

如果您要查找的单词位于字符串中的某个位置,strpos 将返回一个数值。如果未找到任何内容,则返回 false。它永远不会返回 true。

更新:用于$geturl

$geturl = 'http://' . urldecode($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);

最新更新