目前,我有一个PHP函数,它获取CSV文件的内容,并将其放入多维数组中,其中包含我使用索引在不同地方打印的文本。
使用的一个例子是:
$localText[index][pageText][conceptQualityText][$lang];
第一个索引[index]将是页面的名称。第二个索引[pageText]将指示它是什么(页面的文本)。第三个索引,[conceptQualityText]表示实际文本是什么。最后一个索引,[$lang]以所需的语言获取文本。
因此:
->page定位
是->what吗?
->the含量
应该在->what语言中显示。
在以前的PHP版本中,这一切都很好。但是,升级到7.2时,PHP似乎更严格一些。两年前,当我第一次提出这个解决方案时,我还有点绿色,现在我知道,由于这些索引不是定义为字符串(例如封装在诸如so:['index']这样的单引号中),所以它们适合超全局( defined )的表示法。我当时并没有仔细考虑,但是现在PHP似乎把它们解释为“超级全局”,因此我被抛出了一个错误,即x字是一个未定义的超全局的。
我最初的想法是搜索并替换我的示例字符串:
$localText[index][pageText][conceptQualityText][$lang];
使用Notepad++中的正则表达式功能。
然而,这个例子只是众多例子中的一个,数组索引的符号基本上是:
$localText[index][index2][index3][$lang];
,所以我的问题是:
如何使用Notepad++搜索和替换,使用正则表达式,从而使索引指针成为字符串,而不是充当超全局变量?
例如:使:
$localText[index][index2][index3][$lang];
转入:
$localText['index']['index2']['index3'][$lang];
我需要某种逻辑来检查括号中的任何内容,并用单引号封装它们,但最后一个索引[$lang]除外。
我试图提供尽可能多的信息,如果有什么需要详细说明的话,请告诉我。
我试图引用这些医生,但没有多少运气。
发布于 2018-10-22 13:09:45
我找到了一个解决方案
这是:
查找:\b(localText\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)
替换:$1'$2'$3'$4'$5'$6'
就像一种魅力。谢谢大家抽出时间来帮忙。
发布于 2018-10-22 13:04:09
您可以使用以下正则表达式进行匹配:
\[[^'](\w+)[^']\]regex匹配方括号中的一个单词,除非它引用。
代之以:
['$1']正则表达式将不匹配最后的括号,因为它包含一个'$‘号。
https://stackoverflow.com/questions/52929761
复制相似问题