0

変数内の文字列を見つけようとしています。問題は、一意の文字列を検索しないことです。
たとえば、次の値を持つ変数があります。

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

私が使用しているコードは次のとおりです。

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

問題は、pp を検索すると、結果として "p" も返されることです。この種のエラーを回避するにはどうすればよいですか?
e コマース Web サイトで商品のサイズを確認するために使用していますが、正しく表示するのに苦労しています。

何か案は?!

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

値を変更し、同じ strstr 関数を使用して、同様の文字の問題を回避しました。

于 2013-02-06T19:35:52.537 に答える
0

配列への変換を使用して、配列の要素として検索できます。

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

または ( http://php.net/manual/en/function.strstr.php : "干し草の山内で特定の針が発生したかどうかのみを判断したい場合は、代わりに高速でメモリ負荷の少ない関数 strpos() を使用してください")書ける

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