Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php正则表达式获取特殊字符之间的关键字_Php_Regex - Fatal编程技术网

php正则表达式获取特殊字符之间的关键字

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]; $

我在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];
$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