我的代码中有一个字符串,如下所示:
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 :(得分:0)
如果你想捕获一切引用(我假设href =和引号是你要搜索的文本的一部分),那么就这样使用:
/site\/([^\"']*)/i
顺便说一句,你的正则表达式适用于Regex 101,所以也许还有别的错误?
您确定最后一个引号是您要搜索的字符串的一部分吗?只需将其更改为此,看看它是否有效:
/site\/(.*)/i
实际上这并不重要,因为之前的正则表达式不会测试最后一个引用。
你的一个是不正确的。在拨打电话之前尝试打印$ href的值。