我在php中有一堆字符串,看起来都是这样的:
10 NE HARRISBURG
4 E HASWELL
2 SE OAKLEY
6 SE REDBIRD
PROVO
6 W EADS
21 N HARRISON我需要做的是删除城市名称前的数字和字母。我遇到的问题是,它在不同的城市有很大的不同。数据几乎从来都不一样。是否可以删除此数据并将其保留在单独的字符串中?
发布于 2011-03-01 08:49:02
看看以下方法是否适用于您:
$new_str = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $str);发布于 2011-03-01 08:44:12
查看正则表达式和preg_replace。$nameOfCity = preg_replace("/^\d+\s+\w{1,2}\s+/", "", $source);
解释:
^匹配string\d+\s+的开头,以一个或多个数字开头,后跟一个或多个空格characters\w{1,2}\s+,然后应该有一个或两个字母,后跟一个或多个空格characters未涵盖的案例
如果城市名称前只有文本限定符,则为
如果您想更精确,我假设您可以枚举城市名称(S|SE|E|NE|N|NW|W|SW)之前的所有可能的字母,而不是匹配任何一个或两个字母长的字符串。
发布于 2011-03-01 08:47:54
对于每一行,尝试如下所示:
$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方法。
https://stackoverflow.com/questions/5149287
复制相似问题