首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP删除字符串中行开头的数字

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

Stack Overflow用户
提问于 2011-03-01 08:41:52
回答 4查看 3K关注 0票数 4

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

代码语言:javascript
复制
10 NE HARRISBURG
4 E HASWELL
2 SE OAKLEY
6 SE REDBIRD
PROVO
6 W EADS
21 N HARRISON

我需要做的是删除城市名称前的数字和字母。我遇到的问题是,它在不同的城市有很大的不同。数据几乎从来都不一样。是否可以删除此数据并将其保留在单独的字符串中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-01 08:49:02

看看以下方法是否适用于您:

代码语言:javascript
复制
$new_str = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $str);
票数 1
EN

Stack Overflow用户

发布于 2011-03-01 08:44:12

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

解释:

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

未涵盖的案例

如果城市名称前只有文本限定符,则为

  • 如果城市名称前只有一个数字限定符,则为

  • 如果只有一个数字限定符,则城市名称为两个字母。

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

票数 7
EN

Stack Overflow用户

发布于 2011-03-01 08:47:54

对于每一行,尝试如下所示:

代码语言:javascript
复制
$arr = preg_split('/ /', $line);

if(count($arr) === 3)
{
    // $arr[0] is the number
    // $arr[1] is the letter
    // $arr[2] is your city
}
else
{
    // Like "PROVO" no number, no letter
}

是的,这个代码很容易理解,但它是有效的……它会保存你所有的数据。重要的是使用preg_split,而不是过时的split方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5149287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档