В какой-то момент в моем коде есть строка:
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;
И это работает прекрасно?
Если вы хотите захватить все до кавычки (я предполагаю, что href = и кавычки являются частью текста, который вы хотите найти), тогда просто используйте это:
/site\/([^\"']*)/i
Кстати, ваше регулярное выражение работает на Regex 101 так может что то еще не так?
Ты конечно последняя цитата является частью строки, которую вы хотите найти? Просто измените его на это и посмотрите, работает ли он:
/site\/(.*)/i
На самом деле это не должно иметь значения, так как предыдущее регулярное выражение не проверяет последнюю цитату.
Одно из ваших данных неверно. Попробуйте напечатать значение $ href непосредственно перед вызовом.
Других решений пока нет …