0

私がそうするのはなぜですか?

if(strpos("[","[rgeger]")){ 
echo 'hey'; 
}

何も印刷しませんか?

文字列でこれを試してください:

function return_tags($keywords){
 if($keywords){
  $k_array = array();

  foreach($this->check($keywords) as $key=>$value){

    array_push($k_array, $value);
  }

  $last_array = array();
  foreach($k_array as $key=>$value){
    if(strpos("[", $value) && strpos("]", $value) && strlen($value) >= 2){
      $value = '<span class="tag">'.$value.'</span>';

    }
    array_push($last_array, trim($value));

  }
  return $last_array;

 }else{
  return false;
 }
}

文字列の例

  $keywords = "freignferi eiejrngirj erjgnrit [llll] [print me as tag]";

<span>HTMLで印刷された要素を見ましたか?

4

5 に答える 5

5

引数を入れ替えたようです。

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

したがって、文字列にaが含まれているかどうかを知りたい場合[は、次のようにします[rgeger]

if (strpos("[rgeger]", "[") !== false) { 
  echo 'hey'; 
}

(出典: http: //php.net/strpos

于 2012-11-03T20:34:52.967 に答える
3

返される位置はゼロインデックスであるため、最初の文字は位置0にあります。0をブール値として評価する場合、それはfalseです。したがって、ブロックには入りません。

これで修正:

if (strpos('[rgeger]', '[') !== false)

また、議論は間違った方法です。この投稿にこれ以上賛成しないでください。その1つを見つけるために代わりにrobbiに賛成してください:)イーグルアイロビ、イーグルアイ:P

于 2012-11-03T20:32:05.033 に答える
2

strpos()インデックスがゼロであるためにゼロになる可能性があるため、の戻り値をチェックする必要があり[、ゼロはFALSEと評価されるため、ifブロックに入らないので、戻り値がFALSEであることを確認し、ブール値と入力します。次のような整数ゼロ:

if(strpos("[rgeger]","[") !== false){ 
  echo 'hey'; 
}

更新:
パラメーターの順序も間違っていました。件名の文字列が最初に表示され、次に検索文字列が表示されます。これを反映するように上記のコードを更新しました。

于 2012-11-03T20:31:45.530 に答える
1

それは間違っているからです。条件がfalseの場合、Strposはfalseを返します。

if(strpos("[rgeger]","[") !== false){ 
    echo 'hey'; 
}

編集:私は私の答えを修正しました。パラメータの順序が間違っています。これは:

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
于 2012-11-03T20:32:13.317 に答える
0

実際にはstrposは0を返す可能性があるため、docを参照してください。

警告 この関数はブール値のFALSEを返す場合がありますが、FALSEと評価される非ブール値を返す場合もあります。詳細については、ブール値のセクションをお読みください。この関数の戻り値をテストするには、===演算子を使用します。

falseしたがって、値と直接比較する必要があります。

if(strpos("[","[rgeger]") !== false){ 
  echo 'hey'; 
}

編集 ::

注意してください..引数の順序を見てください

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Haystackは文字列入力です。針はあなたが探しているものです。

if(strpos("[regeger]","[") !== false){ 
  echo 'hey'; 
}
于 2012-11-03T20:34:00.407 に答える