提问人:imagIne 提问时间:8/29/2023 最后编辑:Mark RotteveelimagIne 更新时间:8/31/2023 访问量:44
将变量集成到正则表达式中有什么好的语法 [duplicate]
What good syntax for integrating a variable into regex [duplicate]
问:
对于多语言网站,我想检测 URL 中是否存在区域代码(fr、en、es 等)。目标是为每个还没有区域代码的 URL 添加区域代码,例如 : https://subdomain.domain.com/fr。
在回顾了另一个问题之后,我的不同之处在于使用了没有 .显然,根据上下文使用此语法。'..'
为此,我使用函数和这个条件,它起作用:wp_safe_redirect()
if(preg_match ("/^(?:(?!fr).)*$/i", $_SERVER['REQUEST_URI'])){
wp_safe_redirect($addlang.'/'.$currentpage);
}
此条件用于重定向到 language from ,因此我需要插入变量而不是“fr”,但此语法被拒绝。$_SERVER['REMOTE_ADDR']
'.$visitorlang.'
$visitorlang = "result-of-get.geojs.io";
"/^(?:(?!'.$visitorlang.').)*$/i"
我也尝试过{$var},但没有用。
此外,我将使用一个强大的正则表达式来检测开头的两个字符,而不是区域代码,但再一次不接受这种语法:$_SERVER['REQUEST_URI']
"/^(?:(?![a-z]{2}).)*$/i"
此外,是否还有一种特殊的语法来包含“|”(OR) 仅检测允许的语言:“fr|en|es”。
答:
0赞
Barmar
8/29/2023
#1
您不需要引号和 .变量在双引号字符串中自动替换。.
if(preg_match ("/^(?:(?!$visitorlang).)*$/i", $_SERVER['REQUEST_URI'])){
评论
0赞
imagIne
8/29/2023
谢谢,我确定我已经尝试过了。你有什么建议吗?"/^(?:(?![a-z]{2}).)*$/I"
0赞
Barmar
8/29/2023
请为此写一个新问题,并举例说明输入和期望的输出。
0赞
imagIne
8/31/2023
基于这个问题链接并与我自己的问题链接进行比较,您能否解释一下在哪些情况下这种语法是必要的,并且在正则表达式中?这有效:这也是:。".$variable."
$variable
'(?:'.$listlangs.')/?'
"/^(?:(?!$$visitorlang).)*$/I"
0赞
Barmar
8/31/2023
几乎没有变量需要语法的情况。您需要将它与更复杂的表达式一起使用,因为您只能插值变量。.
0赞
Your Common Sense
8/31/2023
我们通常不会回答由错别字引起的问题。尤其是具有误导性的标题和与该标题无关的错误答案。
评论