を理解するのに役立ちpreg_replaceが良いでしょう。私は、このリンクを持っているPHPのにpreg_replace
は試してみました:
preg_replace("/\/([a-z]{2})/\/", $link, $country);
EDIT 答え:あなただけが一致する文字列の一部を知っていれば
preg_replace("/\/[a-z]{2}\//", "/$country/", $link);
を理解するのに役立ちpreg_replaceが良いでしょう。私は、このリンクを持っているPHPのにpreg_replace
は試してみました:
preg_replace("/\/([a-z]{2})/\/", $link, $country);
EDIT 答え:あなただけが一致する文字列の一部を知っていれば
preg_replace("/\/[a-z]{2}\//", "/$country/", $link);
にpreg_replaceは、スイスアーミーナイフのようなものです。 eregではなくpregは、perl互換の正規表現を使用することを意味します。最初のparam(正規表現)にマッチし、3番目のparam(文字列)の2番目のparam(文字列)で置き換えます。
正規表現は、検索ツリーのカットオフテクニックなどを使用して効率を最適化しています。したがって、一般的に効率的な代替方法です。
これは、必要な操作を行う必要があります。
preg_replace("/\/it\//","/es/","http://mysite/myfolder/it/my-keywords.html")
スラッシュをエスケープして正しい正規表現を表示してくれてありがとうBilly。私はあなたが二重引用符btwを使用することをお勧めします... – FFish
にpreg_replaceが有用であるが、他の部分は可変です。あなたの場合、/ it /フォルダは、静的な置き換えが機能するように既に十分にユニークです。代わりにstr_replace
を使用してください:
$url = str_replace("/it/", "/es/", $url);
もし代替正規表現デリミタ(あなたが明らかに少しあなたをトリップエスケープを回避することができる)を選択した場合、これは、より簡単である: 'にpreg_replace(「@/[AZ] {2}/@」を、 $ link、$ country); ' –
その他の区切り文字。フランクのチップをありがとう! – FFish