function replace($file) { global $components; $contents = file_get_contents($file); // echo $contents; $r = false; foreach ($components as $component => $value) { // if ($component != 'Tabs')continue; $contents = preg_replace_callback("#<($component)([/> \n].*)#", "replaceCallBack", $contents); $r = true; } $contents = preg_replace_callback("/(.*)onClick={(.*)/i", "replaceCallBackOnclick", $contents); // echo $contents; file_put_contents($file, $contents); echo "{$file} 文件处理完成[$r]\n"; } function replaceCallBack($matches) { global $prefix, $components; if (strpos($matches[0], 'fieldid=') !== false) { return $matches[0]; } $replaceComponent = $matches[1]; if (!empty($components[$matches[1]])) { $replaceComponent = $components[$matches[1]]; } $randStr = getRandStr(10); return "<{$matches[1]} fieldid=\"{$prefix}_{$randStr}_{$replaceComponent}\"{$matches[2]}"; } function replaceCallBackOnclick($matches) { global $prefix, $components; if (strpos($matches[0], 'fieldid=') !== false) { return $matches[0]; } $randStr = getRandStr(10); $replaceComponent = 'expansion'; return "{$matches[1]}fieldid=\"{$prefix}_{$randStr}_{$replaceComponent}\" onClick={{$matches[2]}"; } 换成js写法
时间: 2024-04-28 21:26:48 浏览: 138
这段代码的主要作用是读取文件内容,对指定的组件进行替换,并将替换后的内容写回文件中。由于涉及到正则表达式的处理,所以使用了 preg_replace_callback 函数。以下是将其转换为 JavaScript 代码的尝试:
function replace(file) {
const components = ["Tabs", "Button", "Input"]; // 组件列表
let contents = fs.readFileSync(file, "utf8"); // 读取文件内容
let r = false;
for (let component of components) {
const regex = new RegExp(`<(${component})([/> \\n].*)`, "g");
contents = contents.replace(regex, replaceCallBack);
r = true;
}
contents = contents.replace(/(.*)onClick={(.*)/gi, replaceCallBackOnclick);
fs.writeFileSync(file, contents); // 写回文件
console.log(`${file} 文件处理完成[${r}]`);
}
function replaceCallBack(match, p1, p2) {
const prefix = "prefix"; // 前缀
const replaceComponent = components.includes(match[1]) ? components[match[1]] : match[1];
const randStr = getRandStr(10);
return `<${match[1]} fieldid="${prefix}_${randStr}_${replaceComponent}"${p2}`;
}
function replaceCallBackOnclick(match, p1, p2) {
const prefix = "prefix"; // 前缀
const randStr = getRandStr(10);
const replaceComponent = "expansion";
return `${p1}fieldid="${prefix}_${randStr}_${replaceComponent}" onClick={{${p2}}}`;
}
注意,这段代码中的 getRandStr 函数需要根据具体的实现进行替换。同时,由于 JavaScript 中使用正则表达式时需要使用 /.../gi 的形式,所以在替换时需要修改正则表达式的写法。
阅读全文