0

我试图在变量中找到一个字符串。问题是它不寻找唯一的字符串。
例如,a 有一个具有以下值的变量:

$mystring = "p,pp,m,g";

这是我正在使用的代码:

<?php 
    $find="pp";
    if(strstr($mystring, $find)==true){
        echo "found"; 
    } 
?>

问题是:当我在寻找 pp 时,它也会返回“p”作为结果。我怎样才能避免这种错误?
我正在使用它来检查电子商务网站上商品的尺寸,但我正在努力让它正确。

有任何想法吗?!

4

4 回答 4

2

使用strpos。确保使用 !== 运算符。

echo strpos($mystring, $find) !== false ? 'found' : 'not found';
于 2013-02-06T12:42:40.443 回答
1
$mystring = "p,pp,m,g";
$str      = explode(",",$mystring);

$find     = "/^pp$/";
foreach($str as $val){
   if(preg_match($find, $val)){
       echo "found => ".$val; 
   }else{
       echo "not found";
   }
}

参考: http: //php.net/manual/en/function.preg-match.php

于 2013-02-06T12:54:45.420 回答
0

You can use transformating to array and search as array's element:

$mystring = "p,pp,m,g";
$arr = explode(',',$mystring);
if (in_array('p',$arr,true)) {echo "found";}

Or (http://php.net/manual/en/function.strstr.php: "If you only want to determine if a particular needle occurs within haystack, use the faster and less memory intensive function strpos() instead") you can write

if (strpos($mystring,'pp')!==false) {echo 'found';} else {echo 'not found';}
于 2013-02-06T12:45:14.780 回答
0

只需更改值并使用相同的 strstr 函数来避免类似的字母问题。

于 2013-02-06T19:35:52.537 回答