2012-12-12 65 views
-5

可能重复:
Remove style attribute from HTML tags如何从PHP中的HTML文件中删除所有<img>标签中的所有'alt'属性?

当前图像看起来像

<img src="images/sample.jpg" alt="xyz"/> 

现在我想删除目前所有这些alt标签中的所有标签在HTML文件中, PHP代码本身应该替代所有的alt属性外观。 输出应该像 <img src="images/sample.jpg" />只有 如何使用PHP?

在此先感谢

+3

[你尝试过什么?](http://whathaveyoutried.com) –

+0

你尝试过什么?你有没有在PHP中读过[DOM](http://php.net/dom)? – Touki

+3

+2 - 真的吗?这个问题是什么,值得upvote? –

回答

1

使用DOMDocument为HTML解析/操作。下面的示例读取HTML文件,从所有img标记中删除alt属性,然后打印出HTML。

$dom = new DOMDocument(); 
$dom->loadHTMLFile('file.html'); 

foreach($dom->getElementsByTagName('img') as $image) 
{ 
    $image->removeAttribute('alt'); 
} 

echo $dom->saveHTML(); // print the modified HTML 
+0

thnks @MrCode为您的帮助。它为我工作。 – PHPLover

0

阅读文件。您可以使用file_get_contents()函数读取文件

$fileContent = file_get_contents('filename.html'); 
$fileContent = preg_replace('/alt=\"(.*)\"/', '', $fileContent); 
file_put_contents('filename.html', $fileContent); 

确保您的文件是可写的

+1

-1 for [using regexp](http://stackoverflow.com/a/1732454/1607098)。 - *版纠正了正则表达式* – Touki

+0

谢谢Touki。这可能不是最好的方式,但它的工作原理... – AndVla

0

对于有效的XHTML它应有的alt属性。

像这样的工作:

$xml = new SimpleXMLElement($doc); // $doc is the html document. 
foreach ($xml->xpath('//img') as $img_tag) { 
    if (isset($img_tag->attributes()->alt)) { 
     unset($img_tag->attributes()->alt); 
    } 
} 
$new_doc = $xml->asXML(); 
1

首先,您需要暂停要修改的文档来源。目前还不清楚您是否要编辑服务器上的某些HTML文件,编辑请求生成的HTML输出或什么...

在这个答案中,我要跨过你如何到达HTML。它可能是file_get_contents('filename.html');some magic with output buffering

由于you don't want to parse HTML with regular expressions你需要使用一个解析器:

由于alt属性是必需的HTML是有效的,如果你想“删除”它,你必须将其设置为空字符串。

这应该工作:

$doc = DOMDocument::loadHTML($myhtml); 
$images = $doc->getElementsByTagName('img'); 

foreach($images as $img) { 
    $image->setAttribute('alt', ''); 
} 

$myhtml = $doc->saveHTML(); 
相关问题