PHP preg_match拆分字符串用加号分隔

时间:2013-03-02 14:38:57

标签: php regex string preg-match

我对一个php正则表达式感到困惑,该正则表达式需要提取两个查询,用搜索请求中的+ 加号句子分隔(可能包括数字和/或特殊字符)。

任何人都可以对这种行为有所了解吗?

$string = 'string1+String-2';

([a-zA-Z0-9-_]+[a-zA-Z0-9-_])

Array
(
    [0] => string1
    [1] => string1
)

3 个答案:

答案 0 :(得分:3)

另一种方法是使用explode()

$string = 'string1+String-2';

$parts=explode("+",$string);

print_r($parts);

带输出:

Array
(
    [0] => string1
    [1] => String-2
)

在此处查看更多信息:

http://php.net/manual/en/function.explode.php

答案 1 :(得分:1)

你可以这样做

/([\w-]+\+[\w-]+)/
方括号后面的非转义+说:“一次或多次之前的表达” 转义\+代表纯+

答案 2 :(得分:1)

假设您使用的是preg_match函数:

您的模式([a-zA-Z0-9-_]+[a-zA-Z0-9-_])会使任何字母或数字变为一次或多次,后跟一个字母或数字。

所以匹配string后跟1。您看到的输出功能就是它所做的功能。

  

如果提供了匹配,那么它将填充搜索结果。   $ matches [0]将包含与完整模式匹配的文本,   $ matches 1将包含与第一个捕获的匹配的文本   带括号的子模式,依此类推。

我猜你可能想用preg_match_all来获取所有匹配的模式。