php正则表达式获取特殊字符之间的关键字
我在PHP中使用以下正则表达式来定义URL中的关键字php正则表达式获取特殊字符之间的关键字,php,regex,Php,Regex,我在PHP中使用以下正则表达式来定义URL中的关键字 $url="https://example.com/search/node/KEYWORD1/loc=11"; $url="https://example.com/search/node/KEYWORD2"; $url="https://example.com/search/node/KEYWORD3/loc=9"; preg_match('search/node/\K\d+/', $url,$m); $KEYWORD= $m[0]; $
$url="https://example.com/search/node/KEYWORD1/loc=11";
$url="https://example.com/search/node/KEYWORD2";
$url="https://example.com/search/node/KEYWORD3/loc=9";
preg_match('search/node/\K\d+/', $url,$m);
$KEYWORD= $m[0];
$KEYWORD返回所有url。如何仅返回URL中的关键字
感谢您的帮助您可以使用。您的模式当前仅匹配1+个数字 请注意,如果要使用
/
作为分隔符,则必须将其添加到起始位置,并在模式内转义正斜杠
|
输出
Star
如果要使用不同的分隔符,代码可能会是这样的
preg_match('~search/node/\K[^\s/]+~', $url,$m);
您可以在想要捕获的内容周围加上括号:第一组将在
$m[1]
中提供:
$url="https://example.com/search/node/KEYWORD3/loc=9";
preg_match('|search/node/([^/]+)/?|', $url,$m);
$KEYWORD= $m[1]; // KEYWORD3
您必须为模式使用分隔符。尝试
preg\u匹配(“~search/node/\K\d+~”,$url,$m)代码>@Thefourthbird不工作,哑弹!我已经添加了一个答案和解释。(关键字)是可变的我的朋友!比如:https://example.com/search/node/Star/loc=9
或https://example.com/search/node/Sky/loc=12
或https://example.com/search/node/whine
我编辑了正则表达式以查看变量关键字(+make/optional结尾)@BijanZand然后您可以将?
添加到字符类中,将其从匹配中排除,您也可以查看一下。mr@Thefourthbird if关键字有空格!你觉得怎么样?像https://example.com/search/node/KEYWORD 关键字?page=5
然后可以从字符类中删除\s
。如果不想匹配换行符,可以将\s
替换为\r\n
$url="https://example.com/search/node/KEYWORD3/loc=9";
preg_match('|search/node/([^/]+)/?|', $url,$m);
$KEYWORD= $m[1]; // KEYWORD3