0

郵便番号にスペースを配置する次のコードがあります。

(string)$postcode = $row['postcode'];
$first = substr($postcode, strlen($postcode)-3);
$second = substr($postcode, strlen($first));
$postcode = $first . ' ' . $second;

このコードは、一部を除いてほとんどのコードで正常に機能します。すなわち

PN45HA 70448

そして、私はなぜ理解できないのですか?誰でもこれに光を当てることができますか?

ありがとうございました

4

3 に答える 3

4

質問をよく理解していませんが、スペースに関するものであれば、これでうまくいきます:

$postcode = 'PN45HA70448';
$postcode = substr($postcode, 0, -3) . ' ' . substr($postcode, -3);
// PN45HA70 448
于 2011-07-28T15:22:49.373 に答える
0
$first = substr($postcode, 0, -3);
$second = substr($postcode, -3);
$postcode = $first . ' ' . $second;
于 2011-07-28T15:28:19.210 に答える
0
$code = 'PN45HA 70448'
$first = substr($postcode, strlen($postcode)-3); // 448
$second = substr($postcode, strlen($first)); // PN45HA 70
$postcode = $first . ' ' . $second; // PN45HA 70 448

問題は、すべての郵便番号が単純な6文字の郵便番号ではないことです。渡した文字列の最後の3文字の前にスペースを追加するだけです。

あなたがする必要があるかもしれないことは正規表現を使うことです:

$code = preg_replace('/([A-Z][0-9][A-Z])\s*([0-9][A-Z][0-9])/', '\1 \2', $code);

これは、郵便番号のように見える任意の文字列を取り、2つの半分の間にオプションのスペースを入れ、単一のスペースに入れます。

于 2011-07-28T15:34:01.243 に答える