用PHP更改URL

时间:2012-08-16 08:24:20

标签: php regex

我需要创建到我的网站的多语言链接,我想考虑使用str_replace,但我不确定这是否是正确的选择。也许REGEX可以解决这个问题......但是我的正则表达式不是那么流畅......

我的网址是这样的: 本地主机/项目/公共/ LANG /事件/ ID /

LANG可以是:

/en/ 
/fi/
/sv/

网址是相同的,只是网址的/ LANG /部分更改。 我试图用这个改变网址:

<?php
$search = array("/sv/", "/fi/");
$replace = array("/en/");
$url_en = str_replace($search, $replace, $url);
echo $url_en;
?>

然而,这并没有给我正确的网址,它用sv或fi取代所有东西。我认为正确的解决方案是

2 个答案:

答案 0 :(得分:0)

使用.htaccess文件翻译frindly网址

在根网站目录中创建.htaccess文件

您的链接看起来像域名/ a / b / c / d

本地主机/项目/公共/ LANG /事件/ ID /

这被翻译为domain / index.php?action = project&amp; saction = public&amp; language = LANG&amp; taction = event&amp; tid = id

他们正被这个文件翻译成domain / index.php?action = a&amp; id = b&amp; saction = c&amp; sid = d

下面的

是我的一个文件,例如;祝你好运

Options +SymLinksIfOwnerMatch

RewriteEngine on


RewriteRule ^([a-zA-Z-]+)/(producator)-([0-9]+)$ index.php?action=$1&producator=$3 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(producator)-([0-9]+)$ index.php?action=$1&id=$2&producator=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)/(producatorx)-([0-9]+)$ index.php?action=$1&producatorx=$3 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(producatorx)-([0-9]+)$ index.php?action=$1&id=$2&producatorx=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)$ index.php?action=$1 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)$ index.php?action=$1&id=$2 [NC,L]

RewriteRule ^(tag)/([a-z0-9]+)$ index.php?action=tag&tag=$2 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(update)-([a-z0-9]+)$ index.php?action=$1&id=$2&saction=update&code=$4 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(delete)-([a-z0-9]+)$ index.php?action=$1&id=$2&saction=delete&code=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)/([a-zA-Z-]+)-([0-9]+)$ index.php?action=$1&id=$2&saction=$3&sid=$4 [NC,L]

RewriteRule ^(.*)-([0-9]+).html$ index.php?action=details&id=$2 [NC,L]

答案 1 :(得分:-3)

preg_replace('|(localhost/project/public/)..|', '\1EN', $url);