[英]PHP preg_replace replace between slash
我这是为了它的开始删除值的PHP函数/
和结束/
从给定的URL。
例如:从http://my-domain.com/search/page_2/order_asc
删除/page_###/
。 结果将是: http://my-domain.com/search/order_asc
: http://my-domain.com/search/order_asc
。
但网址也可能是这样的: http://my-domain.com/search/order_asc/page_2
: http://my-domain.com/search/order_asc/page_2
。 没有结尾/
结尾;
function stripDir($url, $mask){
return preg_replace('/' . $mask . '[\s\S]+?/', '', $url);
}
上面的函数应该能够从以下URL中删除page_5
... stripDir('http://my-domain.com/search/page_5/order_asc', 'page')
和stripDir('http://my-domain.com/search/order_asc/page_5', 'page')
当前正则表达式中的/
是分隔符 ,而不是您要查找的开始和结束字符。 尝试更改定界符,它应该起作用。 另外,如果结尾的/
是可选的,则应修改我认为的正则表达式:
~/page_[\s\S]+?(/|\z)~
或根据您的职能:
~/' . $mask . '[\s\S]+?(/|\z)~
会为你工作。
演示: https : //regex101.com/r/sH7bE2/3
刚刚修改的定界符的演示: https : //regex101.com/r/sH7bE2/2
原始正则表达式演示: https : //regex101.com/r/sH7bE2/1
此外,由于你检查的开始和结束/
你会想重新就地其中的一个/
秒。
带有替代演示: https : //regex101.com/r/sH7bE2/4
function stripDir($url, $mask) {
return preg_replace('/\/' . preg_quote($mask, '/') . '[^\/]+/', '', $url);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.