【发布时间】:2013-06-18 23:13:25
【问题描述】:
我正在解析一个 PHP 文件并将函数原型元素包装在 HTML 中。但是,如果有&符号,它会破坏我的代码。
输入:function foo (&$var1, &$var2){...}//作为字符串
期望的输出(HTML):&$var1, &$var2//基本上就是输出变量以便它们在浏览器中正确显示
现在,我将每个变量发送到 awk 的子方法1,然后发送到 sed。
sub(/^&/, "\\\&", param) #param is the variable of interest (e.g. &$var1)
#Intermediate step in case it's relevant. The awk-processed elements
#are sent to ${file}_param.txt. Each set of parameters are delimited by colons.
param=$(cut -d: -f$counter ${file}_param.txt)
#Replace some default text in template file with real stuff.
sed -i "s|@PARAM|$param|1" "$base"_funct_def.txt
我得到的输出: & 符号正在被解释。整个匹配被替换。
问题的隔离: 执行以下操作会在浏览器中显示我想要的“g$var1”。但是,我正在尝试使用 '&'。
sub(/^&/, "g", param)
我的尝试:我使用了三个反斜杠,因为我认为 awk 会首先将其处理为 '\&',然后将其输入 sed,将 '\&' 解释为文字 '&'。不过,我尝试了 1 到 6 个反斜杠,但无济于事。
问题:我怎样才能逃脱 &?
1手册:http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html
关于我正在尝试做的一些“元”/设计问题(不需要提问!)
我有一堆 PHP 文件,我正在尝试为其生成一些文档(结构类似于 Javadocs)。我正在使用 REGEX 和 shell 脚本进行分析并分析它,以便列出函数名称、参数和返回项。到目前为止,我认为 REGEX 的效果很好,但是我已经阅读了很多关于 REGEX 不应该用于此的内容。我欢迎任何有关这方面的 cmets(通常如何生成文档?)。谢谢大家!
【问题讨论】:
-
$param实际上包含什么?如果命令不是按顺序运行的(例如,如果中间实际上有一些其他代码),则不应将它们放在同一个代码块中,这会产生误导。 -
抱歉误导部分。将来我会牢记这一点。 $param 包含一个参数元素。例如,如果有一个函数:
function foo(&$arg1, $arg2)$param 应该是'&$arg1'不过好消息:我找到了一个修复程序。在执行 sed 之前,我确保转义任何 '&'。我在第一个参数分配之后添加了以下内容:param=$(echo $param | sed 's|^&|\\&|g')这与尝试将内容包装在代码的 awk 部分相反。