我正在对表单进行快速重复检查。在比较两个字符串时,我尝试了这样的事情:
if (stripos($_SESSION['website'], $f['website']))
我收到此错误:
Fatal error: Call to undefined function: stripos() in...
我不希望它是完全匹配的,基本上如果$_SESSION['website']
www.google.com,我希望stripos
返回true
如果$f['website]
www.goog.com
我做错了什么,还是有更好的方法
?编辑:我正在做一些测试,并注意到我的$_SESSION['website']
变量是否包含www
和.com
。我的$f['website]
变量也是如此。strpos
不应该把它恢复为真吗?
stripos(),根据手册只存在于 PHP 5 或更高版本的核心中。如果 stripos 不存在,那就表明你使用的是 PHP 4,它已经过时了。我建议你升级。如果出于某种疯狂的原因你真的不能,你总是可以在调用strpos之前强制两个字符串为小写,这将具有相同的效果:
<?php
// PHP 5.
$pos = stripos( 'www.google.com', 'google.com' );
// PHP 4.
$pos = strpos( strtolower( 'www.google.com' ), strtolower( 'google.com' ) );
也就是说,您的代码还有更多内容:您正在检查if( stripos( $foo, $bar ) )
如果字符串$foo
以字符串$bar
开头,它将返回 0。您应该改为与if( stripos( $foo, $bar ) !== false )
联系。
另一方面:我不认为 stripos 会帮助你。你提到了www.google.com
和www.goog.com
,这是两个完全不同的东西。后者不是前者的子字符串,stripos 检查子字符串的起始位置,它不做"松散比较"。
如果你想要"like"并且你在数组中有术语,你可能想看看similar_text()函数,它将给你一个指示两个不同字符串的相似程度。举个例子:
<?php
$similarity = 0;
similar_text( 'www.goog.com', 'www.google.com', $similarity );
var_dump( $similarity );
上面的代码将$similarity
设置为 float(92.307692307692)
,这是两个字符串的相似性(以百分比表示)。您可以自然地自己决定相似性的阈值。
它是一个strpos('Your String or websitename','The Term Search');
如果它找到匹配项,则返回 true,否则返回 false
$a=strpos($_SESSION['website'], $f['website'])
if($a==TRUE) {
//do stuff
} 还 {
//other stuff
}