我想将这些网址转换为seo友好网址:
index.php?t=1&s=1&offset=50&hits=50 ---> index-t-1-s-1-offset-50-hits-50.html
index.php?t=1&s=1 ---> index-t-1-s-1.html
index.php?t=1&s=&offset=50&hits=50 ---> index-t-1-s-1-offset-50-hits-50.html
index.php?t=1 ---> index-t-1.html
我写了这个:
$filename = substr(basename($base_href),0,'-4');
$str = preg_replace('/href=\'\?t=(\d+)&s=(\d+)\'/i', 'href=\''.$filename.'-t-$1-s-$2.html\'', $str);
但我需要一个通用的表达方式。你能帮助我吗?
答案 0 :(得分:1)
我注意到您已将.php?
(?
我认为是可选的)术语和所有符号替换为-
,最后添加.html
。所以,你只需要这样做:
$filename = "index.php?t=1&s=1&offset=50&hits=50";
$result = preg_replace('/(?:\.php\??|\W)/', '-', $filename) . '.html';
//~> index-t-1-s-1-offset-50-hits-50.html
它会:
.php?
或.php
替换为-
; \W
(不与\w
混淆)替换为-
; .html
详细了解正则表达式here
答案 1 :(得分:0)
对于解决方案,我首先将网址拆分为?
,然后将所有&
和=
替换为-
,然后将字符串连接回来(在处理之后)删除网址其他部分的.php