PHP 从字符串和字母中删除数字(如果存在)


php removing numbers from a string and a letter if it's there

我正在寻找一种从地址中删除属性编号的方法。

例如,地址可以是 - 56 Hello Road

我已经设法使用以下代码删除了该号码,并且有效

            $meta_url = trim(str_replace(range(0,9),'', $row[property_address_1]));

但是,如果地址是56b Hello Road,则它离开b并返回 - b Hello Road

知道如何编辑当前代码以删除下一个相应的字母吗?

一种方法是使用正则表达式:

preg_replace('/[0-9]+[a-z]/', '', $row['property_address_1'])

该表达式的意思是:

  • [0-9]+ 0-9 范围内的一个或多个字符,后跟
  • [a-z] a-z 范围内的一个小写字符

首先,您可能希望在空格处拆分字符串,然后查看第一项是否符合某个条件:

<?php 
    $addressParts = explode(" ",$property_address);
    if(preg_match('/'b[0-9]+[a-z]{0,2}'b/', $addressParts[0], $matches)){
        unset($addressParts[0]);
    }
    $property_address = implode(" ",$addressParts);
?>

/'b[0-9]+[a-z]{0,2}'b/意味着:

'b:开头的词边界

[0-9]+:任意长度的数字字符

[a-z]{0,2}:最小 0 最多 2 个字符的字母数字字符

'b:末尾的单词边界