1

我有一系列这样的 URL:

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 都是多语言时统一导航菜单的问题)

4

2 回答 2

6

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

if( preg_match("(/(de|en|jp)/)",$url,$m)) {
    $lanuage = $m[1];
}
于 2013-06-03T16:37:49.620 回答
0

您可以使用不同的分隔符,例如 %。

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

那应该对您有所帮助,只需修改您所拥有的:)。

于 2013-06-03T16:42:11.110 回答