Это может быть интересный вопрос, но мне интересно, может ли кто-нибудь подумать о том, как взять кусок html, сканировать его для тегов <img>
и если тег не имеет ширины + значение высоты применяют его с list($width, $height, $type, $attr);
?сканирование и редактирование высоты ширины img по php до выхода
Подробнее у меня есть страница php, которая содержит другую страницу только с html. Я бы хотел, чтобы 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>
Проблема заключается в том, что он генерирует полный файл html4 в середине, только изменяя первый тег img и, по-видимому, не выводит код впоследствии:
<!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>
Теперь мне просто нужна помощь выяснить, как реализовать list($width, $height, $type, $attr);
включить справа и с высотой (и, очевидно, только тогда, когда она еще не установлена).
так что-то вроде этого? ' php $ doc = new DOMDocument(); $ doc-> loadHTMLFile ("filename.html"); /* изменить img теги здесь как-то ... */ echo $ doc-> saveHTML(); ?> ' – Paul
@Paul, точно. – Brad
это/* изменение img теги здесь как-то ... */часть Я не уверен, как заставить придерживаться нового кода :) – Paul