【发布时间】:2011-04-08 22:49:15
【问题描述】:
如何从字符串的开头删除数字和空格?
例如,从“13 Adam Court, Cannock”中删除“13”
【问题讨论】:
-
@Null:我想我们会让模组决定做什么。可能合并问题。
如何从字符串的开头删除数字和空格?
例如,从“13 Adam Court, Cannock”中删除“13”
【问题讨论】:
如果输入的字符串都具有相同的预期格式,并且通过左修剪所有数字和空格(无论它们在字符串前面出现的顺序如何),您将收到相同的结果,那么您实际上不需要启动正则表达式引擎。
我喜欢正则表达式,但除非它比非正则表达式技术提供有价值的优势,否则不要使用它。正则表达式通常比非正则表达式技术慢。
将ltrim() 与包含空格和数字的字符掩码一起使用。
代码:(Demo)
var_export(
ltrim('420 911 90210 666 keep this part', ' 0..9')
);
输出:
'keep this part'
字符串是否以空格开头也没关系。 ltrim() 会贪婪地删除字符串开头的所有空格或数字实例,直到它不能再删除为止。
【讨论】:
因为其他人都在走\d+\s路线,所以我会给你脑残的答案
$str = preg_replace("#([0-9]+ )#","",$str);
明智的说法,不要在正则表达式中使用 / 作为分隔符,在尝试执行文件路径或类似 http://
时,您会遇到可怕的倾斜牙签问题:)
【讨论】:
您其他问题上的same regex I gave you 仍然适用。你只需要改用preg_replace()。
搜索/^[\s\d]+/ 并替换为空字符串。例如:
$str = preg_replace(/^[\s\d]+/, '', $str);
这将从字符串开头以任意顺序删除数字和空格。对于仅删除数字后跟空格的内容,请参阅 BoltClock 的答案。
【讨论】:
我会使用
/^\d+\s+/
它在字符串的开头寻找任意大小的数字 ^\d+
然后在\s+\s+
当您在某些字母前使用反斜杠时,它表示某事...
\d 代表一个数字 0,1,2,3,4,5,6,7,8,9。
\s 代表一个空格 .
在末尾添加一个加号 (+) 即可...
\d+一串数字(数字)
\s+ 多个空格(错别字等)
【讨论】:
使用我在JavaScript answer 中提供的相同正则表达式,但使用preg_replace() 应用它:
preg_replace('/^\d+\s+/', '', $str);
【讨论】:
/^\d+/;如果要删除所有数字,请删除 ^。
试试这个:
^\d+ (.*)$
像这样:
preg_replace ("^\d+ (.*)$", "$1" , $string);
资源:
关于同一主题:
【讨论】: