使用PHP从字符串中的行的开头删除数字

shi*_*juo 3 php split

我在php中有一堆字符串,看起来像这样:

10 NE HARRISBURG
4 E HASWELL
2 SE OAKLEY
6 SE REDBIRD
PROVO
6 W EADS
21 N HARRISON
Run Code Online (Sandbox Code Playgroud)

我需要做的是删除城市名称前面的数字和字母.我遇到的问题是,不同城市之间的差异很大.数据几乎不一样.是否可以删除此数据并将其保存在单独的字符串中?

Ale*_*aho 6

查看正则表达式和preg_replace.$nameOfCity = preg_replace("/^\d+\s+\w{1,2}\s+/", "", $source);

解释:

  1. ^ 匹配字符串的开头
  2. \d+\s+ 以一个或多个数字开头,后跟一个或多个空格字符
  3. \w{1,2}\s+ 然后应该有一个或两个字母后跟一个或多个空白字符
  4. 字符串的其余部分应该是城市的名称.

案件未涵盖

  • 如果城市名称前面只有文本限定符
  • 如果城市名称前面只有一个数字限定符
  • 如果只有一个数字限定符,并且城市名称是两个字母长.

如果你想更精确,我假设你可以枚举城市名称之前的所有可能的字母,(S|SE|E|NE|N|NW|W|SW)而不是匹配任何一个或两个字母长的字符串.


小智 1

看看以下内容是否适合您:

$new_str = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $str);
Run Code Online (Sandbox Code Playgroud)