如何在键入(不使用MySQL)时搜索部分字符串,如MySQL中的LIKE函数,但在搜索字符串时使用PHP,例如
<?php
$string = "Stackoverflow";
$find = "overfl";
if($find == $string)
{
return true;
}
else
{
return false
}
?>
Run Code Online (Sandbox Code Playgroud)
但显然工作不会,但有一个功能,你可以搜索部分字符串?那太好了 :)
编辑:
如果它在阵列中怎么办?
如果我使用strpos,它会做回声,如果我使用它,它就像truetruetruetruetrue.
JAL*_*JAL 13
我倾向于使用strpos
$needle='appy';
$haystack='I\'m feeling flappy, and you?';
if(strpos($haystack,$needle)!==false){
//then it was found
}
Run Code Online (Sandbox Code Playgroud)
如果您希望它忽略大小写,请使用stripos.
请注意,关于此的细微之处在于,如果针位于干草堆的最开头,则在位置0处返回整数0.这意味着您必须false使用严格比较进行比较,否则会产生假阴性.
如手册中所述,链接如上
警告
此函数可能返回布尔值FALSE,但也可能返回非布尔值,该值的计算结果为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.
就使用数组而言,strpos意味着需要两个字符串.使用数组将产生Warning: strpos() expects parameter 1 to be string, array given或1Warning:strpos():needle不是字符串或整数.
好吧,假设您有一组要搜索的字符串.
您可以
$needles=array('hose','fribb','pancake');
$haystack='Where are those pancakes??';
foreach($needles as $ndl){
if(strpos($haystack,$ndl)!==false){ echo "'$ndl': found<br>\n"; }
else{ echo "'$ndl' : not found<br>\n"; }
}
Run Code Online (Sandbox Code Playgroud)
在不使用数组的情况下在一个字符串中搜索多个字符串的另一种方法...这只会告诉您是否找到了至少一个匹配项.
$haystack='Where are those pancakes??';
$match=preg_match('#(hose|fribb|pancake)#',$haystack);
//$match is now int(1)
Run Code Online (Sandbox Code Playgroud)
或者,使用preg_match_all查看有多少匹配,总计.
$all_matches=preg_match_all('#(hose|fribb|pancake)#',$haystack,$results);
//all_matches is int(2). Note you also have $results, which stores which needles matched.
Run Code Online (Sandbox Code Playgroud)
在那里,搜索词是正则表达式.()将这些术语组合在一起,|意思是"或".#表示模式的开始和结束.正则表达式可以很快变得复杂,但当然,它们可以工作!出于性能原因,通常会避免使用它们,但如果您正在测试多个字符串,则这可能比上述数组循环方法更有效.我敢肯定还有其他方法可以做到这一点.
| 归档时间: |
|
| 查看次数: |
13180 次 |
| 最近记录: |