正则表达式需要更改URL

问题描述 投票:0回答:2

我想将这些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);

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

php regex preg-replace
2个回答
1
投票

我注意到您替换了.php?(我认为这是可选的?)一词,并将所有simbol替换为-,并在末尾附加.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的更多信息


0
投票

[对于解决方案,我首先将URL除以?,然后将所有&=替换为-,然后将字符串连接回去(在处理过程中删除了.php在另一部分中URL)

© www.soinside.com 2019 - 2024. All rights reserved.