使用PHP删除HTML属性

使用PHP删除HTML属性,php,Php,使用PHP我想删除所有HTML属性,除了 “img”标记中的“src”属性 及 “a”标记中的href“属性 我的输入文件是从.doc和.docx转换而来的.html文件 我的输出文件应该是HTML文件,属性已删除 请帮帮我 编辑:: 在尝试下面的alexander脚本后,如果我在代码编辑器中打开strip.html,我看不到任何更改 <?php $path = '/var/www/strip.html'; $html = file_get_contents($path); $dom =

使用PHP我想删除所有HTML属性,除了

“img”标记中的“src”属性

“a”标记中的href“属性

我的输入文件是从.doc.docx转换而来的.html文件

我的输出文件应该是HTML文件,属性已删除

请帮帮我

编辑::

在尝试下面的alexander脚本后,如果我在代码编辑器中打开strip.html,我看不到任何更改

<?php
$path = '/var/www/strip.html';
$html = file_get_contents($path);
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
$dom->formatOutput = true;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
if (false === ($elements = $xpath->query("//img"))) die('Error');

foreach ($elements as $element) {
    for ($i = $element->attributes->length; --$i >= 0;) {
        $name = $element->attributes->item($i)->name;
        if ('src' !== $name) {
            $element->removeAttribute($name);
        }
    }
}

if (false === ($elements = $xpath->query("//a"))) die('Error');

foreach ($elements as $element) {
    for ($i = $element->attributes->length; --$i >= 0;) {
        $name = $element->attributes->item($i)->name;
        if ('href' !== $name) {
            $element->removeAttribute($name);
        }
    }
}

$dom->saveHTMLFile($path);

?>

使用类解析HTML(“a”“img”标记处理):

另外,请阅读并查看

更新(除“a”“img”属性处理外的所有标签):


@stefan如何让它像我输入html一样工作,然后单击一个按钮,我应该要求保存处理后的html文件???该链接应该可以帮助您开始,我不会为您设计应用程序,但在您获得html后,无论如何,将其通过正则表达式传递。这是输出与输入相同的文件。。。我所做的:将您提供的代码保存为php,将$path值更改为输入文件路径,还为输出路径添加了一个新字符串$path,并在最后一行将$path更改为$path。。在浏览器中加载了php文件。我收到的输出与$PATHdir中的输入相同。。属性不是removed@PHPGeany当然,你做错了什么,因为这段代码没问题。证明:@PHPGeany“在浏览器中加载了php文件”?您是否在本地计算机上安装了http服务器?您是否尝试通过控制台运行此代码,如“phpcodesource.php”?浏览器没有集成php解释器,这就是为什么在浏览器中加载php代码没有任何作用。找到我在原始问题中所做的编辑我使用lamp堆栈我尝试使用本地浏览器作为localhost/path.phpDo错误日志中有错误/警告吗?尝试更改
$dom->saveHTMLFile($path)
to
var_dump($dom->saveHTML())
查看属性删除是否存在问题。
$path = '/path/to/file.html';
$html = file_get_contents($path);
$dom = new DOMDocument();
//$dom->strictErrorChecking = false;
$dom->formatOutput = true;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
if (false === ($elements = $xpath->query("//img"))) die('Error');

foreach ($elements as $element) {
    for ($i = $element->attributes->length; --$i >= 0;) {
        $name = $element->attributes->item($i)->name;
        if ('src' !== $name) {
            $element->removeAttribute($name);
        }
    }
}

if (false === ($elements = $xpath->query("//a"))) die('Error');

foreach ($elements as $element) {
    for ($i = $element->attributes->length; --$i >= 0;) {
        $name = $element->attributes->item($i)->name;
        if ('href' !== $name) {
            $element->removeAttribute($name);
        }
    }
}

$dom->saveHTMLFile($path);
$path = '/path/to/file.html';
$html = file_get_contents($path);
$dom = new DOMDocument();
//$dom->strictErrorChecking = false;
$dom->formatOutput = true;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
if (false === ($elements = $xpath->query("//*"))) die('Error');

foreach ($elements as $element) {
    for ($i = $element->attributes->length; --$i >= 0;) {
        $name = $element->attributes->item($i)->name;
        if (('img' === $element->nodeName && 'src' === $name)
            || ('a' === $element->nodeName && 'href' === $name)
        ) {
            continue;
        }

        $element->removeAttribute($name);
    }
}

$dom->saveHTMLFile($path);