Как вырезать это с помощью регулярки?

есть текст, в котором такие строки
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">


Помогите вырезать из текста строки height="*" и width="*".

Мучаюсь уже очень долго. Спасибо за ранее
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
myfirepukan
@myfirepukan
Жарим поиск
/height=\"[0-9]{1,}\"/
То же самое с width regexr.com/3dq7o потом из preg_match берёте нужный элемент - там только цифра будет без окружения
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
miraage
@miraage
Старый прогер
Немного извращенский вариант, но не забывайте, что в PHP существуют такие возможности.

<?php

$html = <<<EOF
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">
<img height="720" src="http://www.example.com/static/ckef/img/2_122.jpg" width="960">
EOF;

$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$images = $dom->getElementsByTagName('img');
$result = '';

/** @var DOMElement $image */
foreach ($images as $image) {
    $image->removeAttribute('width');
    $image->removeAttribute('height');
    
    $result .= $dom->saveHTML($image);
}

echo $result, PHP_EOL;


<img src="http://www.example.com/static/ckef/img/2_122.jpg"><img src="http://www.example.com/static/ckef/img/2_122.jpg"><img src="http://www.example.com/static/ckef/img/2_122.jpg">
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Winsik
@Winsik
сис.админ, недопрограммист :)
синтаксис не помню, но как то так : /<img height=\"(\d+)\".*width=\"(\d+)\".*>/
Ответ написан
Комментировать
initrd0
@initrd0
Это я =)
$text - Ваш текст, тогда результат:
$text = preg_replace("/(.*?)height=\"(.*?)\"(.*?) width=\"(.*?)\"(*?)/si", "$1$3$5", $text);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы