0

都市の状態の文字列から都市を抽出しようとしている以下のコードがあります。ほとんどの場合は機能しますが、コロラド州が都市であり、州でもあるため、以下では機能しないことがわかりました. $geography_navコロラドスプリングスを作成する必要があり、州が都市文字列の一部ではない場合にも機能する必要があります。これを達成する方法について何か考えはありますか?

$geography->description = Colorado
$geography->name- = Colorado Springs Colorado

 $geography_nav=explode($geography->description, $geography->name);</code>

I am updating this, I don't necessarly need to use explode, just trying to find some way to extract the city out of the city state string. The format will always be the same as shown above in $Geography->name and the

$Geography->description常に州名と同じになります。

4

3 に答える 3

1

文字列のインスタンスを右から検索するstrrpos関数を利用しました。

これ、$geography->name が $geography->description の最後にある州を確実に持っていることがわかっている場合に機能します。

$statePos = strrpos($geography->name, $geography->description);
if ($statePos>0){
   $state = substr($geography->description, $statePos);
   $city = substr($geography->description, 0, strlen($geography->description)-$statePos);
}
于 2013-02-08T21:30:42.740 に答える
0

実際、ここでの正規表現は本当に必要なものです。各エントリでpreg_matchを使用し ますhttp://www.php.net/manual/en/function.preg-match.php

正規表現:$regex = '/([a-z\s]+)\s[(Arizona),(New Mexico)]/i'

利用方法:preg_match( $regex , $string , $matches ); $city = $matches[1];

(すべての状態をコンマで区切り、括弧内に角かっこで追加します)

編集

上記で提供したコードを使用するには:

if( preg_match( '/^([a-z\s]+)\s' . $geography->description . '/i' , $geography->name, $matches ) )
    $geography_nav = $matches[1];
于 2013-02-08T21:52:08.787 に答える
0

州の配列がある場合は、strrpos() を実行して、各州名の最後の発生 (存在する場合) を見つけることができると思います。爆発はあなたに何もしません。

于 2013-02-08T21:30:37.970 に答える