Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 匹配正则表达式i url_Php_Regex_Pagination - Fatal编程技术网

Php 匹配正则表达式i url

Php 匹配正则表达式i url,php,regex,pagination,Php,Regex,Pagination,我试图在页面上建立分页的过程中剔除页面查询。 网址是 $url = www.example.com?category=computers&page=10 正则表达式 但这并没有找到匹配项?您应该以~开始和结束您的模式。这将有助于: preg_replace('~&page=[0-9]+~', '', 'www.example.com?category=computers&page=10'); 您的正则表达式失败,因为您正在页面参数及其值后搜索与 您可以通过在符号后添加

我试图在页面上建立分页的过程中剔除页面查询。 网址是

$url = www.example.com?category=computers&page=10
正则表达式


但这并没有找到匹配项?

您应该以~开始和结束您的模式。这将有助于:

preg_replace('~&page=[0-9]+~', '', 'www.example.com?category=computers&page=10');

您的正则表达式失败,因为您正在
页面
参数及其值后搜索与

您可以通过在符号后添加问号使“与”成为可选符号

$url = 'www.example.com?category=computers&page=10';
$cleanUrl = preg_replace('/page=[0-9,]+&?/', '', $url);
例如

要获得更全面的正则表达式,请尝试:

<?php
$url = 'www.example.com?&category=cat&page=10';
$cleanUrl = rtrim(preg_replace('/(&|\?)page=[0-9,]+&?/', '$1', $url), '&?');
echo $cleanUrl;

为什么
*
?至少在我看来,OP要求在
page=
之后出现一个数字或逗号。还有为什么
~
超过
/
?它只是一个分隔符。当然不是*而是+因为将有一个或多个数字。As delimiter~和/将起作用。如果表达式的开头与其中一个匹配可能会更好?或者&这样,url中类似于
category=weirdpage=1000&
的内容就不会在url中出错。这不太可能,但可能值得警惕
<?php
$url = 'www.example.com?&category=cat&page=10';
$cleanUrl = rtrim(preg_replace('/(&|\?)page=[0-9,]+&?/', '$1', $url), '&?');
echo $cleanUrl;