首页 > 解决方案 > 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];

$KEYWORD 返回所有 url。如何只返回 URL 中的 KEYWORDS?

感谢您的帮助

标签: phpregex

解决方案


您可以更新您的模式以匹配除空白字符或/使用否定字符类之外的任何字符。您的模式目前仅匹配 1 位以上的数字。

请注意,如果要将/用作分隔符,则必须将其添加到开头,并转义模式内的正斜杠。

正则表达式演示| php演示

$url="https://example.com/search/node/Star/loc=9";
preg_match('/search\/node\/\K[^\s\/]+/', $url,$m);
$KEYWORD=  $m[0];
echo $KEYWORD;

输出

Star

如果您使用不同的分隔符,您的代码可能看起来像

preg_match('~search/node/\K[^\s/]+~', $url,$m);

推荐阅读