0

私は自分のサイトへの多言語リンクを作成する必要があります。str_replaceを使用することを考えていますが、これが正しい選択であるかどうかはわかりません。たぶんREGEXがそのトリックをするでしょう...しかし、正規表現にはそれほど流暢ではありません...

私のURLは次のようなものです:localhost / project / public / LANG / event / id /

LANGは次のようになります。

/en/ 
/fi/
/sv/

それ以外のURLは同じですが、URLの/LANG/部分だけが変更されます。私はこれでURLを変更しようとしました:

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

しかし、それは私に正しいURLを与えません、そしてそれはすべてのものをsvまたはfiに置き換えます。正しい解決策は

4

2 に答える 2

0

.htaccessファイルを使用して、わかりやすいURLを翻訳します

ルートWebサイトディレクトリに.htaccessファイルを作成します

リンクはdomain/a / b / c/dのようになります

localhost / project / public / LANG / event / id /

これはdomain/index.php?action = project&saction = public&language = LANG&taction = event&tid=idとして翻訳されています

それらはこのファイルによってdomain/index.php?action = a&id = b&saction = c&sid=dに変換されています

以下は、例として私のファイルの1つです。幸運を

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]
于 2012-08-16T08:59:14.680 に答える
-3
preg_replace('|(localhost/project/public/)..|', '\1EN', $url);
于 2012-08-16T08:36:07.203 に答える