0

私は文字列「その家に9つの寝室」を持っていますが、それは他のものでもかまいませんが、寝室のキーワードは残ります(ベッド、ベッド、寝室、寝室など)<-これは$search_array変数です

私は爆発を使用して配列に変換しました

ベッドルームという単語を見つけて、その横に数字があるかどうかを確認する必要があります。

爆発後の配列が - (9、ベッドルーム、イン、ザット、ハウス) であると仮定すると、その横の数字を確認するにはどうすればよいですか?

以下のコードと関数内で使用したため、$array =& $this->search_array

if($array =& $this->search_array){
$bedroom_keywords = array('bed', 'beds', 'bedroom', 'bedrooms');
foreach($this->bedroom_keywords as $beds)
        {   
            // if successful in assigning key find a 
            // number in next and previous positions
            if($key = array_search($beds, $array))
            {
                if($next = $array[$key+1])
                {
                    echo $next;
                }
                elseif($prev = $array[$key-1])
                {
                    echo $prev;
                }
            }
        }
}

しかし、私はこのエラーを受け取ります:

注意: 未定義のオフセット: 92 行目の /Users/User/Sites/parser.php の 2 9ad_type:

2つのトークン、つまり「9ベッド」のみを使用する場合。

配列に次/前の値があるかどうかを確認したり、何かを実行したりする方法はありますか?

ありがとう

4

4 に答える 4

2

「9ベッド」で関数を実行すると、キー+ 1は2になり、配列には位置0と1しかないため、配列の長さを確認する必要があると思います。内部に条件を追加するだけですif-else 条件。

于 2012-06-19T08:13:03.590 に答える
1

このタスクには正規表現を使用できます。

([0-9]+) +(bed|beds|bedroom|bedrooms)

少なくとも 1 桁の数字、任意の数のスペース、それらのベッド ワードの 1 つを検索します。

于 2012-06-19T08:12:33.710 に答える
1

正規表現を使用します。たとえば、各入力からベッド数を取得するには、次のようにします。

$inputs = array('1 bed', '22 beds', '1 bedROOM', '99   beDRooms', 'beds');
foreach($inputs as $input) {
    if (preg_match('/(\d+)\s+bed($|s|room|rooms)/i', $input, $matches)) {
        echo "$input => ".$matches[1]."\n";
    }
    else {
        echo "$input => **no match**\n";
    }
}

上記の正規表現は、1 つ以上の数字 (分離したい) に一致し、その後に任意の量の空白が続き、その後に言及したトリガー ワードが続きます。

実際に見てください

于 2012-06-19T08:16:55.287 に答える
0

あなたが配列を持っていると仮定します

$bedroom_keywords = array('bed', 'beds', 'bedroom', 'bedrooms');

キーワードをチェックしたいのですが、これもできます

foreach($bedroom_keywords as $keyword){
    // here you will check it from you actuall array
     if(in_array($keyword ,'yoyr array')){
         echo 'success';
    }
}

これがお役に立てば幸いです

于 2012-06-19T08:14:26.567 に答える