假设我有一个PHP字符串,其中包含以下文本,或者其他一些文本,如果放入解释器,则是有效的Javascript代码:
$ js_script PHP变量
var loaded = [];
var loading = [];
var downloading = [];
function load(name)
{
loading.push(name);
downloading.push(name);
// do some asynchronous stuff, with the following callback:
(function () {
loaded.push(name);
downloading = [];
});
}
我想将变量loading
(在整个代码中替换变量名称本身)替换为l1
,而不使用使用完整的JavaScript解析器,从而产生以下输出:
$ js_script PHP变量
var loaded = [];
var l1 = [];
var downloading = [];
function load(name)
{
l1.push(name);
downloading.push(name);
// do some asynchronous stuff, with the following callback:
(function () {
loaded.push(name);
downloading = [];
});
}
我认为避免使用解析器的原因是一个不错的选择:
我不关心性能,因为要缓存结果输出。我考虑过使用正则表达式,即使用以下代码在代码字符串中查找“loading”的所有内容:
\bloading\b(?=[^"]*(?:"[^"]*"[^"]*)*$)
......这显然不支持撇号,但除此之外,似乎到目前为止还没有完成任务。
有什么我想念的吗?我知道批发中的JavaScript不是常规语言,但这部分怎么样?我应该忘记使用正则表达式,而是使用解析器吗?