2011-03-22 9 views
0

を理解するのに役立ちpreg_replaceが良いでしょう。私は、このリンクを持っているPHPのにpreg_replace

は試してみました:

preg_replace("/\/([a-z]{2})/\/", $link, $country); 

EDIT 答え:あなただけが一致する文字列の一部を知っていれば

preg_replace("/\/[a-z]{2}\//", "/$country/", $link); 
+1

もし代替正規表現デリミタ(あなたが明らかに少しあなたをトリップエスケープを回避することができる)を選択した場合、これは、より簡単である: 'にpreg_replace(「@/[AZ] {2}/@」を、 $ link、$ country); ' –

+0

その他の区切り文字。フランクのチップをありがとう! – FFish

答えて

1

にpreg_replaceは、スイスアーミーナイフのようなものです。 eregではなくpregは、perl互換の正規表現を使用することを意味します。最初のparam(正規表現)にマッチし、3番目のparam(文字列)の2番目のparam(文字列)で置き換えます。

正規表現は、検索ツリーのカットオフテクニックなどを使用して効率を最適化しています。したがって、一般的に効率的な代替方法です。

これは、必要な操作を行う必要があります。

preg_replace("/\/it\//","/es/","http://mysite/myfolder/it/my-keywords.html") 
+0

スラッシュをエスケープして正しい正規表現を表示してくれてありがとうBilly。私はあなたが二重引用符btwを使用することをお勧めします... – FFish

0

にpreg_replaceが有用であるが、他の部分は可変です。あなたの場合、/ it /フォルダは、静的な置き換えが機能するように既に十分にユニークです。代わりにstr_replaceを使用してください:

$url = str_replace("/it/", "/es/", $url); 
+0

@FFish; reと関連するphp関数を学んでください。そう、再ケースのために、将来、複製されたものをもう1つ質問しません。 – miqbal

+0

こんにちは、実際にリンクは動的です。 preg_replace( "/ \ /([a-z] {2})/ \ /"、$ link、$ country)が必要です。 – FFish

+0

@FFish;あなたはすでに適切な正規表現を持っている場合は、正確にあなたの質問は何ですか? – mario

関連する問題