3

我正在对表格进行快速重复检查。在比较两个字符串时,我正在尝试这样的事情:

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']变量是否包含wwwand .com。我的$f['website]变量也是如此。不应该将strpos其返回为 true 吗?

4

2 回答 2

5

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' ) );

也就是说,您的代码还有更多内容:如果字符串以 string开头,您正在检查if( stripos( $foo, $bar ) )which 将返回 0 。你应该检查一下。$foo$barif( stripos( $foo, $bar ) !== false )

另一方面:我不认为stripos会帮助你。你提到www.google.comwww.goog.com,这是两个完全不同的东西。后者不是前者的子字符串,stripos 检查子字符串的起始位置,它不进行“松散比较”。

如果你想要“喜欢”并且你有一个数组中的术语,你可能想检查一下similar_text()函数,它可以告诉你两个不同的字符串有多相似。举个例子:

<?php
$similarity = 0;
similar_text( 'www.goog.com', 'www.google.com', $similarity );
var_dump( $similarity );

上面的代码将设置$similarityfloat(92.307692307692),这是两个字符串的相似度百分比。自然,您可以自己决定相似度的阈值。

于 2012-04-11T13:52:13.403 回答
-2

它是一个 strpos('Your String or Websitename','The Term Search');

如果找到匹配,则返回 true 否则返回 false

$a=strpos($_SESSION['website'], $f['website'])

如果($a==真){

    //do stuff

} 别的 {

    //other stuff
}
于 2012-04-11T13:53:07.240 回答