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;