0

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

任何人都可以阐明这种行为吗?

$string = 'string1+String-2';

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

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

3 回答 3

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

于 2013-03-02T14:55:15.157 回答
1

你可以这样做

/([\w-]+\+[\w-]+)/

方括号后面的未转义+表示:“一次或多次之前的表达式”转义\+代表纯+.

于 2013-03-02T14:43:22.833 回答
1

假设您正在使用函数preg_match

您的模式([a-zA-Z0-9-_]+[a-zA-Z0-9-_])是将任何字母或数字匹配一次或多次,然后是字母或数字。

所以它匹配 onstring后跟1. 您看到的输出是函数按照它所说的做。

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

我猜您可能打算使用 preg_match_all 来获取所有匹配模式。

于 2013-03-02T14:47:24.710 回答