0

我想将这些 URL 转换为 SEO 友好的 URL:

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);

但我需要一个通用的表达方式。

4

2 回答 2

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在结果上

在此处阅读有关正则表达式的更多信息

于 2012-06-30T04:27:42.107 回答
0

对于解决方案,我首先将 URL 拆分为?,然后将所有&=替换为 ,然后-将字符串连接回来(在处理后删除.phpURL 的另一部分)

于 2012-06-30T04:25:10.407 回答