Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式:获取带有问号的所有URL_Php_Regex_Html Parsing - Fatal编程技术网

PHP正则表达式:获取带有问号的所有URL

PHP正则表达式:获取带有问号的所有URL,php,regex,html-parsing,Php,Regex,Html Parsing,我有一个正则表达式: preg\u match\u all(“/ 和preg\u match\u all将返回: http://site.com/index.php?id=1 http://site.com/calc/index.php?id=1&scheme=Venus不要试图在一个正则表达式中实现所有操作。使用现有方法,然后分别检查返回的URL,查看其中是否有问号 也就是说,不要使用正则表达式来解析HTML。你无法用正则表达式可靠地解析HTML,你将面临悲伤和挫折。一旦HTML改变了你的预期

我有一个正则表达式:

preg\u match\u all(“/

preg\u match\u all
将返回:

http://site.com/index.php?id=1


http://site.com/calc/index.php?id=1&scheme=Venus

不要试图在一个正则表达式中实现所有操作。使用现有方法,然后分别检查返回的URL,查看其中是否有问号


也就是说,不要使用正则表达式来解析HTML。你无法用正则表达式可靠地解析HTML,你将面临悲伤和挫折。一旦HTML改变了你的预期,你的代码将被破坏。有关如何用已经使用的PHP模块正确解析HTML的示例,请参阅已经编写、测试和调试。

安迪·莱斯特给了你正确的答案

这是你的正则表达式:

<a\s.*?href\s*=\s*['|\"](.*?\?.*?)(?=#|\"|')

preg\u match\u all(“@可以在两行中使用,但可以在一行中使用。谢谢,我会检查它。
preg_match_all("@<a\s*href\s*=[\'\"]([^\'\"]+\?[^\'\"]+)[\'\"]@si", $data, $matches);