Мое регулярное выражение неправильно захватывает группы

В какой-то момент в моем коде есть строка:

href="http://mywebsite.com/site/link.php?M=191123&N=34&FL=H&L=7"

Что мне нужно захватить это все после /site/поэтому я использую следующий код, чтобы попытаться это:

preg_match("/site\/(.*?)(?:\"|')/i", $href, $pmatch);
$params = json_encode($pmatch);

Но когда я эхо $paramsЯ получаю значение []так что это не соответствует ни одной группе, где это должно быть?

РЕДАКТИРОВАТЬ

Дело в том, что я использую этот код в отдельном php-файле:

$href = 'href="http://mysite/em/site/link.php?M=191123&N=34&FL=H&L=7"';
preg_match("/site\/([^\"']*)/i", $href, $matches);
$params = $matches[1];

echo $params;

И это работает прекрасно?

0

Решение

Если вы хотите захватить все до кавычки (я предполагаю, что href = и кавычки являются частью текста, который вы хотите найти), тогда просто используйте это:

/site\/([^\"']*)/i

Кстати, ваше регулярное выражение работает на Regex 101 так может что то еще не так?

Ты конечно последняя цитата является частью строки, которую вы хотите найти? Просто измените его на это и посмотрите, работает ли он:

/site\/(.*)/i

На самом деле это не должно иметь значения, так как предыдущее регулярное выражение не проверяет последнюю цитату.

Одно из ваших данных неверно. Попробуйте напечатать значение $ href непосредственно перед вызовом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector