PHP正则表达式 - 正斜杠和交替的问题

时间:2013-06-03 16:35:25

标签: php regex wordpress magento

我有一系列的网址如下:

http://www.somesite.com/de/page
http://www.somesite.com/de/another
http://www.somesite.com/de/page/something
http://www.somesite.com/de/page/bar

我需要搜索文本块并提取语言并使用正则表达式:

/(de|en|jp)/

我正在尝试通过preg_replace找到并替换,并包含正斜杠:

/de/
/en/
/jp/

但是,这不起作用,也不包括斜杠。我已尝试使用\\\转义斜杠。我已经尝试将针放在preg_quote中,但这会打破交替。

我觉得我在这里错过了一些非常简单的东西!

修改

全功能电话:

preg_replace("/(de|en|jp)/", "/".$newLang."/", $url);

-

(标记magento和wordpress,因为我试图解决当两个CMS都是多语言时统一导航菜单的问题)

2 个答案:

答案 0 :(得分:6)

您不必使用斜杠作为分隔符,但必须有一些分隔符。试试这个:

if( preg_match("(/(de|en|jp)/)",$url,$m)) {
    $lanuage = $m[1];
}

答案 1 :(得分:0)

您可以使用其他分隔符,例如%。

if (preg_match('%/(de|en|jp)/%', $url, $match)) {
    $lang = $match[1];
}

这应该对你有帮助,只需修改你拥有的东西:)。