匹配正则表达式 i url

Match regex i url

我正在尝试在页面上构建分页时删除页面查询。

url 是

$url = www.example.com?category=computers&page=10

正则表达式

$cleanUrl = preg_replace('/page=[0-9,]+&/', '', $url);

虽然没有找到匹配项?

您应该以 ~ 开始和结束您的模式。这将起作用:

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

您的正则表达式失败,因为您正在搜索 page 参数后的 & 符号及其值。

您可以通过在其后附加一个问号来使 & 符号可选。

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

示例,https://regex101.com/r/uW8uV8/1

要获得更多通过正则表达式的尝试:

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

这需要 rtrim 函数来删除尾随参数胶水。这将占...

Page by itself, www.example.com?page=10
Page as the last parameter, www.example.com?species=wolf&page=10
Page as the first parameter, www.example.com?page=10&species=wolf
Page as a middle parameter, www.example.com?cat=tom&mouse=jerry&page=10&species=wolf