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);
这将获取正斜杠的最后一个实例之前的所有内容。
我有以下 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);
这将获取正斜杠的最后一个实例之前的所有内容。