0

わかった、

だからここに私のコードがあります:

        $explode = explode("+ ", $article);
        $explode_count = count($explode);

        for($i=0;$i<$explode_count;$i++)
        {
            $numbers = preg_replace('/[^0-9]/', '', $explode[$i]);
            $letters = preg_replace('/[^a-zA-Z]/', ' ', $explode[$i]);  

            if($letters == "All Star Game")
            {
                 echo "Done";
            } 
        }

$letters変数はAllStarGameと同じです。しかし、何らかの理由で、「完了」はエコーされていません。文字列内の文字から数字を分離するために使用しているpreg_replace関数を使用したものでしょうか?$letters変数をに変更すると

   $letters = preg_replace('/[^a-zA-Z]/', '', $explode[$i]);    

残りのコードを次のように設定します。

if($letters == "AllStarGame")
{
     echo "Done";
}

次に、phpはそれをエコーアウトします。ここのスペースはどうなっているのですか?

4

2 に答える 2

1
于 2012-06-02T11:31:46.797 に答える
0

これは、正規表現がスペースを除外しているためです。

$letters = preg_replace('/[^a-zA-Z]/', ' ', $explode[$i]);
//                          ^ I only accept letters, not spaces

解決策は、正規表現を忘れて、によって爆発すること' + 'です。

<?php
$teams = explode(' + ', $article);

foreach ($teams as $team) {
    if ($team == "All Star Game") {
         echo "Done";
    } 
}

配列の最後に空の文字列が続く可能性があることに注意してください(文字列の最後には含ま' + 'れていますが、空の文字列が表示されると簡単breakにわかります。

于 2012-06-02T11:31:41.017 に答える