我有很多像这种模式的字段:
re2man: (johnny bravo)
re1man: (john smith)......
user: (firstname lastname)..
我想使用正则表达式或其他php函数来获取冒号之前的字符(“:”)
答案 0 :(得分:12)
查看explode()
只需将字符串拆分为':'。
例如,list($username) = explode(':', $string);
(list()
用于将爆炸字符串的第一部分分配给$username
并丢弃其余部分;更长的方法是:
$parts = explode(':', $string); $username = $parts[0];
此外,您可以使用额外限制参数来表示您不需要其余部分,例如:
list($username) = explode(':', $string, 1);
可能会或可能不会更快。此外,我希望使用explode()
比其他一些基于正则表达式的解决方案更有效。
答案 1 :(得分:4)
正则表达式:
preg_match('/([^:]*):/', $subject, $matches);
纯字符串搜索:
strstr($subject, ':', true);
答案 2 :(得分:0)
使用print preg_replace('/^([^:]+)(:.*)$/', "$1", $string);
答案 3 :(得分:0)
这个怎么样:
$matches = array();
preg_match('/([\w\d]+):\s+\(([\w\d\s]*\))/', $line, $matches);
$username = $matches[1];
$realname = $matches[2];
当然,您应该循环使用此功能,并检查preg_match()
来电的返回值,看看该行是否符合您的预期。