【问题标题】:Simple html dom can find PHP script (<?php ... ?>)?简单的 html dom 可以找到 PHP 脚本(<?php ... ?>)吗?
【发布时间】:2018-07-26 21:34:30
【问题描述】:

我在工作中使用 simple-html-dom。我想使用 simple-html-dom 获取所有 PHP 脚本 (&lt;?php ... ?&gt;) 表单文件。

如果我有一个文件(名称:text.php),代码如下:

<html>
<head>
    <title>Title</title>
</head>
<body>
    <?php echo "This is test Text"; ?>
</body>
</html>

那么我如何使用 simple-html-dom 在代码文件上方获取这个 PHP 脚本 &lt;?php echo "This is test Text"; ?&gt;

$html = file_get_html('text.php');
foreach($html->find('<?php') as $element) {
    //Sonthing code ...
}

我不能这样使用,还有其他选择吗?

【问题讨论】:

  • 不明白,能不能详细点?
  • 不适用。使用preg_replace()
  • SimpleHtmlDOM 可能不会使处理指令可见。 PHPs DOM 方法可以。更好的选择是分词器(尽管需要重建字符串),或者一个简单的正则表达式。
  • 其实你为什么要这个?
  • 您能否告诉我们更多信息 - 目前尚不清楚您要做什么

标签: php simple-html-dom


【解决方案1】:

这是一个使用正则表达式的解决方案。请注意,正则表达式通常可用于解析 HTML 文件。也就是说,在这种情况下可能没问题。

这将匹配 PHP 代码块的每个实例,并允许您输出(或执行任何其他操作)整个块(包括标签)或块中包含的代码。请参阅preg_match_all() 的文档。

<?php

$string = <<<'NOW'
<html>
<head>
    <title>Title</title>
    <?php echo "something else"; ?>
</head>
<body>
    <?php echo "This is test Text"; ?>
</body>
</html>
NOW;

preg_match_all("/\<\?php (.*) \?\>/", $string, $matches);

foreach($matches[0] as $index => $phpBlock)
{
    echo "Full block: " . $phpBlock;
    echo "\n\n";
    echo "Command: " . $matches[1][$index];
    echo "\n\n";
}

DEMO

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多