文字列の最後の文字から 7 番目と 8 番目の文字を削除したい。
$string = "Tucson AZ 85718";
州の略語を削除しようとしています。さまざまな郵便番号に対してこれらの文字列がたくさんあるので、「AZ」を「」に置き換えることはできません.
文字列の最後の文字から 7 番目と 8 番目の文字を削除したい。
$string = "Tucson AZ 85718";
州の略語を削除しようとしています。さまざまな郵便番号に対してこれらの文字列がたくさんあるので、「AZ」を「」に置き換えることはできません.
$string = substr($string, 0, -8) . substr($string, -5);
デモ:
php> $string = "Tucson AZ 85718";
php> echo substr($string, 0, -8) . substr($string, -5);
Tucson 85718
正規表現もその仕事をします。これは、大文字 2 文字の文字列とその後のスペースを削除します。
$string = preg_replace('/\b[A-Z]{2}\b /', '', $string);
$string = substr_replace($string, "", -8, 2);
php regexpの専門家ではありませんが、
$string=preg_replace(" {w{1}} ", " ", $string);
あなたのために仕事をします。可変長の都市名で機能する必要があります。:wq
免責事項:私はアメリカ人ではなく、アメリカの住所をよく知りません!
私は間違いなくpreg_replace
またはでこれを行いますpreg_match_all
:
$string = "Tucson AZ 85718";
// Don't be mislead by the second [A-Z], this means all uppercase characters
$pattern = '/^(.+ )([A-Z]{2} )(\d+)$/';
preg_match_all($pattern, $string, $matches);
var_dump($matches);
これにより、次のような配列が得られます。
array(4) {
[0]=>
array(1) {
[0]=>
string(15) "Tucson AZ 85718"
}
[1]=>
array(1) {
[0]=>
string(7) "Tucson "
}
[2]=>
array(1) {
[0]=>
string(3) "AZ "
}
[3]=>
array(1) {
[0]=>
string(5) "85718"
}
}
...ここで、2番目、3番目、4番目のインデックスは、それぞれ市、州コード、郵便番号になります。
または、プレフィックスをpreg_replace
次のように削除することもできます。
$string = "Tucson AZ 85718";
$pattern = '/^(.+ )([A-Z]{2} )(\d+)$/';
$normalised = preg_replace($pattern, '$1$3', $string);
...これにより、「Tucson 85718」が得られます。ここ$1 and $3
で、2番目の引数preg_replace
のは、パターン内の括弧内の1番目と3番目のブロックに関連しています((.* )
それぞれ(\d{5})
)。
仮定: