gpt4 book ai didi

javascript string - 删除 PHP 指令,只留下 HTML 元素

转载 作者:行者123 更新时间:2023-11-30 19:23:59 27 4
gpt4 key购买 nike

我想使用 js 从包含 PHP 和 HTML 代码的字符串重新填充 html DOM。

var string = "<?php echo Hi Friends ?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/loader.js" defer></script>
</head>
<body>
<p>Hello</p>
<?php echo Hi Friend ?>
</body>
</html>";

期望的输出:

var string = *strip away all php*;
var string = "<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/loader.js" defer></script>
</head>
<body>
<p>Hello</p>
</body>
</html>";
window.body.innerHTML = string;

我希望只呈现 html 代码。

最佳答案

这是一个有效的方法:

  1. 通过 .split() 将您的字符串转换为数组在末尾字符上:
var arr = string.split('\n');
  1. 遍历数组,使用此正则表达式删除任何 PHP 字符串
let cln = arr[i].replace(/(.*)(<\?.*\?>)(.*)/, "$1$3");
  1. 将每个“清理过”的行存储到一个新数组中

正则表达式的解释(第2步)

() - 代表一个“捕获组”(每行会被分成三个捕获组)

(.*) - 第一组包含从头开始的所有字符 UNTIL...

(...) - 第二个捕获组包含来自 <??>以及介于两者之间的所有字符(即 PHP 字符串)

(.*) - 第三组包含 PHP 字符串后的任何字符

$1 $2 $3 - 是三个捕获组的内容

因此,每一行(因为它是由 for 循环处理的)被分成这三组字符。

在大多数行中,第 2 组和第 3 组是空的。第 1 组是整条线。因此,返回第 1 组和第 3 组会返回整行。

在包含 PHP 字符串的行中,PHP 在捕获组 2 中(永远不会返回)。返回第 1 组和第 3 组要么返回空字符串,要么返回 PHP 字符串之前或之后的一些空格。所以,我们也使用 .trim()删除那些。如果删除空格的行的长度为零,我们不会将其包含在新的(输出)数组中。

var htm = `<?php echo Hi Friends ?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/loader.js" defer> </head>
<body>
<p>Hello</p>
<?php echo Hi Friend ?>
</body>
</html>`;
//console.log(htm);
var out=[], arr=htm.split('\n');
for ( var i=0; i<(arr.length); i++ ){
let cln = arr[i].replace(/(.*)(<\?.*\?>)(.*)/, "$1$3");
//console.log(cln + ' - ' + cln.trim().length);
if (cln.trim().length>0){
out.push(cln.trim());
}
}
console.log(out.join("\n") );

关于javascript string - 删除 PHP 指令,只留下 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com