目前,我有一个PHP函数,该函数获取CSV文件的内容并将其放入多维数组,该数组包含我使用索引在不同位置打印出的文本。
使用示例为:
$localText[index][pageText][conceptQualityText][$lang];
第一个索引[index]
将是页面的名称。第二个索引[pageText]
将指示它是什么(页面的文本)。第三个索引[conceptQualityText]
指示实际的文本。最后一个索引[$lang]
获取所需语言的文本。
如此:
->页面位置
->是什么
->内容
->应以哪种语言显示。
在以前的PHP版本中,所有这些都工作正常。但是,升级到7.2后,PHP似乎更加严格。大约2年前,当我第一次提出此解决方案时,我有点绿了,现在知道,因为这些索引未定义为字符串,例如像这样['index']
封装在单引号中,它们适合超全局(DEFINE)的表示法。那时我并没有考虑太多,但是现在PHP似乎将它们解释为(超级全局变量),因此我抛出了 x word 是未定义的超级全局变量的错误。
我最初的想法是进行搜索并替换示例字符串:
$localText[index][pageText][conceptQualityText][$lang];
使用记事本++中的正则表达式功能。
但是,该示例只是众多示例之一,数组索引的表示法基本上是:
$localText[index][index2][index3][$lang];
所以我的问题是:
如何使用正则表达式使用Notepad ++搜索和替换,使索引指针变成字符串,而不是充当超全局变量?
例如制作:
$localText[index][index2][index3][$lang];
进入:
$localText['index']['index2']['index3'][$lang];
我需要某种逻辑来检查方括号内的内容,并用单引号将它们括起来,最后一个索引[$lang]
除外。
我试图提供尽可能多的信息,让我知道是否需要详细说明。
我很幸运地尝试引用these docs。
答案 0 :(得分:0)
您可以使用以下正则表达式进行匹配:
\[[^'](\w+)[^']\]
除非用引号引起来,否则正则表达式与方括号之间的单词匹配。
替换为:
['$1']
由于正则表达式包含'$
'符号,因此正则表达式将不匹配。
答案 1 :(得分:0)
我找到了使用的解决方案
此:
找到:\b(localText\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)
替换:$1'$2'$3'$4'$5'$6'
,它就像一种魅力。感谢所有花时间帮助您的人。