javascript字符串-删除仅保留HTML元素的PHP指令

时间:2019-07-20 00:12:23

标签: javascript php html

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

Beam

所需的输出:

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>";

我希望仅呈现html代码。

2 个答案:

答案 0 :(得分:1)

这是一种有效的方法:

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

RegEx的说明(步骤2)

()-代表一个“捕获组”(每行将分为三个捕获组)

(.*)-第一组包含从头到尾的所有字符...

(...)-第二个捕获组包含从<??>及其之间的所有字符(即PHP字符串)

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

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

因此,每行(由for循环处理)都分为这三个字符组。

在大多数行中,组2和3为空。第一组是整条线。因此,返回第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") );

答案 1 :(得分:0)

我相信这对使用正则表达式和replace原型的用户将有效。关于字符串构造方式的一点说明,您将要替换用双引号引起来的引号(“),并用尖锐的符号(`)代替

string.replace(/\<\?php.*>/g,'');