此问题已在此处有答案:
Variable inside regular expression php(2个答案)
上个月关门了。
这篇文章上个月被编辑并提交审查,未能重新打开帖子:
原始关闭原因未解决
对于一个多语言的网站,我想检测区域代码(FR,EN,ES等)内的URL的存在。目标是为每个还没有区域代码的URL添加区域代码,例如:https://subdomain.domain.com/fr。
在回顾了另一个question之后,我的不同之处在于使用了没有'..'
的语法。这种语法的使用显然取决于上下文。
要做到这一点,我使用wp_safe_redirect()
函数和这个条件的工作原理:
if(preg_match ("/^(?:(?!fr).)*$/i", $_SERVER['REQUEST_URI'])){
wp_safe_redirect($addlang.'/'.$currentpage);
}
这个条件用于从$_SERVER['REMOTE_ADDR']
重定向到language,所以我需要插入变量'.$visitorlang.'
而不是“fr”,但是这个语法被拒绝了。
$visitorlang = "result-of-get.geojs.io";
"/^(?:(?!'.$visitorlang.').)*$/i"
我也试过{$var},但不起作用。
另外,我将使用一个强大的正则表达式来检测$_SERVER['REQUEST_URI']
开头的两个字符,而不是区域代码,但这种语法再次不被接受:
"/^(?:(?![a-z]{2}).)*$/i"
是否有特殊的语法来包含“|“(或)仅检测允许的语言:“fr| en| es”。
1条答案
按热度按时间piah890a1#
你不需要引号和
.
。变量在双引号字符串中自动替换。