PHP字符串函数在转换为字符串的数字上不能正常工作

时间:2011-07-28 15:18:48

标签: php string postal-code

我有以下代码在邮政编码中放置一个空格。

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

除了一些代码之外,代码适用于大多数代码。即

PN45HA 70448

我不明白为什么?任何人都可以对此发光吗?

三江源

3 个答案:

答案 0 :(得分:4)

不要真正理解这个问题,但如果它是关于空间的,那么这将起作用:

$postcode = 'PN45HA70448';
$postcode = substr($postcode, 0, -3) . ' ' . substr($postcode, -3);
// PN45HA70 448

答案 1 :(得分:0)

$first = substr($postcode, 0, -3);
$second = substr($postcode, -3);
$postcode = $first . ' ' . $second;

答案 2 :(得分: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);

这将使用任何看起来像邮政编码的字符串,在两半之间有可选空格,并放在一个空格中。