如何创建php字符串条功能

时间:2012-09-01 11:51:34

标签: php string split

我正在尝试创建一个操作邮政编码的功能,但是由于英国的邮政编码都是不同的尺寸我很难解决,我试图通过(例如“DN11AA”)这将需要返回下面,“dn | dn1-1 | dn1-1aa”

另一个例子是传递“B32B” - 这将返回“b | b3-2 | b3-2b”

感谢您抽出宝贵时间阅读本文:)

2 个答案:

答案 0 :(得分:3)

有处理英国邮政编码的标准正则表达式代码。

完全全面的表达式如下:

(GIR 0AA)|(((A[BL]|B[ABDFHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2})

您可以在PHP中使用它,如下所示(为简洁起见,我假设您已将上述代码放入名为$postcode_regex的变量中):

$pc_is_valid = preg_match($postcode_regex, $input_string);

根据您想要使用它做什么,您可能需要使用其他preg_xxx()函数,并可能修改上面的字符串,但如果没有更多信息,很难给出更明确的建议。

有关如何解析邮政编码的更多信息,请参阅维基百科文章:http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

答案 1 :(得分:1)

这应该有效。

function post($post){
 for($i = 0; $i < strlen($post); $i++)
    if(is_numeric(substr($post, $i, 1))){
       $j=$i;
       if(is_numeric(substr( $post, $i+2, 1)))$j++;          
       return substr($post, 0, $i).'|'.substr($post, 0, $j+1).'-'.substr($post, $j+1,1).'|'.substr($post, 0, $j+1).'-'.substr($post, $j+1);
    }

 } 

编辑,测试,工作