0

いくつかの文の最初の単語を確認したいと思います。最初の単語が、、、、、などの場合For、文をスキップしたいと思います。AndNorButOr

コードは次のとおりです。

<?php
  $sentence = 'For me more';
  $arr = explode(' ',trim($sentence));
  if(stripos($arr[0],'for') or stripos($arr[0],'but') or stripos($arr[0],'it')){
    //doing something
  }
?>

空白の結果、何が問題なのですか?ありがとうございました :)

4

3 に答える 3

2

おそらくpreg_filter、評価される文字列が何であるかを知りたい場合に使用します (つまり、文を解析する必要はありません)。

$filter_array = array(
    '/^for\s/i',
    '/^and\s/i',
    '/^nor\s/i',
    // etc.
}

$sentence = 'For me more';

$result = preg_filter(trim($sentence), '', $filter_array);

if ($result === null) {
    // this sentence did not match the filters
}

これにより、一連のフィルター正規表現パターンを特定して、一致するかどうかを確認できます。この場合''、「置換」値として使用しただけであることに注意してください。実際に置換を行うことはあまり気にしないためです。この関数は、正規表現の配列を渡すための優れた方法を提供します。

于 2012-10-29T22:58:28.883 に答える
2

Stripos は、干し草の山で針が最初に出現した位置を返します。最初の出現は位置 0 であり、これは false と評価されます。

代替手段としてこれを試してください

$sentence = 'For me more';

// make all words lowercase
$arr = explode(' ', strtolower(trim($sentence)));

if(in_array($arr[0], array('for', 'but', 'it'))) {
   //doing something
   echo "found: $sentence";
} else {
   echo 'failed';
}
于 2012-10-29T22:55:25.460 に答える
2

ここで、stripos単語が見つかった場合 (位置 0 で見つかった場合) は 0 を返します。

単語が見つからない場合は false を返します。

あなたは書くべきです:

if(stripos($arr[0],'for') !== false or stripos($arr[0],'but') !== false or stripos($arr[0],'it') !== false){ 
  //skip 
}
于 2012-10-29T22:51:43.727 に答える