繁体   English   中英

PHP preg_replace在斜杠之间替换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM