将变量集成到regex中的语法有多好[duplicate]

anauzrmj  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(94)

此问题已在此处有答案

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”。

piah890a

piah890a1#

你不需要引号和.。变量在双引号字符串中自动替换。

if(preg_match ("/^(?:(?!$visitorlang).)*$/i", $_SERVER['REQUEST_URI'])){

相关问题