我使用以下代码来检查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']);