<img>
これはファンキーな質問かもしれませんが、HTMLのチャンクを取得してタグをスキャンし、タグに幅と高さの値がない場合は、それを適用する方法を誰かが考えられるlist($width, $height, $type, $attr);
でしょうか。
より詳細には、htmlのみを含む別のページを含むphpページがあります。ブラウザに出力する前にHTMLを変更したいと思います。
これは私が見ているものの単純化されたバージョンです:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="content">
<?php
include_once("client-contributed-text-and-images.php");
?>
</div>
</body>
</html>
以下のいくつかの入力の後、私は次のことを思いついた:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="content">
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile("client-contributed-text-and-images.php");
foreach ($dom->getElementsByTagName('img') as $item) {
$item->setAttribute('width', '100');
echo $dom->saveHTML();
exit;
}
?>
</div>
</body>
</html>
問題は、最初のimgタグを変更するだけで、その後はコードを出力しないように見える一方で、途中で完全なhtml4ファイルを生成することです。
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="content">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><img src="img1.jpg" width="100"><h1>header</h1>
<p>some text</p>
<a href="http://google.com">some link</a>
<img src="img2.jpg"></body></html>
そこで、ギアを切り替えて、代わりにfopen()を試し、部分的に機能させました。
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="content">
<?php
$root = realpath($_SERVER['DOCUMENT_ROOT']);
$file = $root."/client-contributed-text-and-images.php";
$f = fopen($file, 'r');
$contents = fread($f, filesize($file));
fclose($f);
$new_contents = str_replace("<img ", "<img width='100' height='100' ", $contents);
echo $new_contents;
?>
</div>
</body>
</html>
与えた:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="content">
<img width='100' height='100' src="img1.jpg">
<h1>header</h1>
<p>some text</p>
<a href="http://google.com">some link</a>
<img width='100' height='100' src="img2.jpg"></div>
</body>
</html>
今、私は、right withとheightを含めるように実装する方法を理解するのに少し助けが必要ですlist($width, $height, $type, $attr);
(そして明らかにそれがまだ設定されていない場合のみ)。