PHP регулярное выражение получить ключевые слова между специальными символами - PullRequest
1 голос
/ 28 сентября 2019

Я использую следующее регулярное выражение в 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?

спасибо за помощь

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Вы можете обновить свой шаблон, чтобы он соответствовал любому символу, кроме символа пробела или /, используя отрицательный класс символов .В настоящее время ваш шаблон соответствует только 1+ цифрам.

Обратите внимание, что если вы хотите использовать / в качестве разделителя, вы должны добавить его в начало, а также избежать косой черты внутри шаблона.

Regex demo | Php demo

$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);
0 голосов
/ 28 сентября 2019

Вы можете заключить в скобки то, что хотите записать: первая группа будет доступна в $m[1]:

$url="https://example.com/search/node/KEYWORD3/loc=9";
preg_match('|search/node/([^/]+)/?|', $url,$m);
$KEYWORD=  $m[1]; // KEYWORD3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...