PHP preg_replace URL 不工作

PHP preg_replace URL not working

我有以下 URL 结构:

http://website.com/wordpress/2012/04/permalink-string-string/

我想摆脱/2012/04

我试过这个:

$cont = preg_replace('http:\/\/website\/.com\/wordpress\/[0-9]{4}\/[0-9]{2}\/', 'http://website.com/', $cont);

我对反斜杠进行了两次转义...

我尝试了其他主题的样本,但没有得到任何结果。只是空 $cont.

谢谢!

你有一个额外的 /,没有开始和结束的斜杠,你也没有转义点,这意味着它可以接受任何东西来代替点。但是,这是工作代码:

$cont = "http://website.com/wordpress/2012/04/permalink-string-string/";
$cont = preg_replace('/http:\/\/website\.com\/wordpress\/[0-9]{4}\/[0-9]{2}\//', 'http://website.com/', $cont);
print_r($cont);

这会打印 http://website.com/permalink-string-string/

你的正则表达式可能会被一个否定的先行断言简化一点

$cont = preg_replace('/.*?\/(?!.*\/)/', 'http://www.website.com/wordpress/', $cont);

这将获取正斜杠的最后一个实例之前的所有内容。