使用正则表达式或php函数获取“:”之前的所有字符(冒号)

时间:2011-08-02 22:17:31

标签: php regex

我有很多像这种模式的字段:

    re2man: (johnny bravo)
re1man: (john smith)......

user: (firstname lastname)..

我想使用正则表达式或其他php函数来获取冒号之前的字符(“:”)

4 个答案:

答案 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()来电的返回值,看看该行是否符合您的预期。