PHP字符串函数在转换为字符串的数字上无法按预期工作


PHP string functions not working as expected on numbers cast as string

我有下面的代码,它在邮政编码中放置了一个空格。

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

该代码适用于除某些代码外的大多数代码。即

pn45公顷70448

我不明白为什么?有人能照亮这个吗?

感谢

我真的不明白这个问题,但如果是关于空间的,这会起作用:

$postcode = 'PN45HA70448';
$postcode = substr($postcode, 0, -3) . ' ' . substr($postcode, -3);
// PN45HA70 448
$first = substr($postcode, 0, -3);
$second = substr($postcode, -3);
$postcode = $first . ' ' . $second;
$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);

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