У меня есть жало, которая является HTML, и я хочу удалить определенные разделы этого сервера с помощью PHP (без использования JavaScript/jQuery-решений). Строка должна иметь определенные идентификаторы в ней для тегов разделов, которые могут быть удалены, и я также буду иметь некоторую переменную, которая указывает, какие отмеченные разделы должны быть удалены. Эти метки индикаторов не должны оставаться в окончательной модифицированной строке.Удаление разделов HTML-строки с использованием PHP
Например, рассмотрите $html_1
, где я включил атрибут capture
, чтобы пометить разделы, которые могут быть удалены. Или $html_2
, где я обернул [capture]
вокруг тегов, которые могут быть удалены. Обратите внимание, что это были всего лишь два возможных способа, по которым я думал о пометке разделов, и все в порядке с любым другим методом, который позволяет хранить строку в БД.
Для обоих, у меня есть <h2>
блок, <h1>
блок, и блок, в котором <p>
capture
используется для обозначения участков, которые могут или не могут быть удалены. Затем дано $modify
, которое указывает, какие разделы следует удалить или не следует удалять, как я могу сгенерировать новую строку, которая равна $html_new
? Я думаю, может быть, DOMDocument
, str_replace
или решение для регулярных выражений может работать, но не уверен.
<?php
$html_1 = <<<EOT
<div>
<div>
<div>
<h1 capture="a">bla bla bla</h1>
<p>bla</p>
<h2 capture="b">bla bla<span>bla</span></h2>
<h1>bla bla bla bla</h1>
</div>
</div>
<div>
<p capture="c">bla bla bla</p>
<h1>bla bla</h1>
</div>
</div>
EOT;
$html_2 = <<<EOT
<div>
<div>
<div>
[caption id="a"]<h1>bla bla bla</h1>[/caption]
<p>bla</p>
[caption id="b"]<h2>bla bla<span>bla</span></h2>[/caption]
<h1>bla bla bla bla</h1>
</div>
</div>
<div>
[caption id="c"]<p>bla bla bla</p>[/caption]
<h1>bla bla</h1>
</div>
</div>
EOT;
$modify=array('a'=>true,'b'=>false,'c'=>true);
$html_new = <<<EOT
<div>
<div>
<div>
<p>bla</p>
<h2>bla bla</h2>
<h1>bla bla bla bla</h1>
</div>
</div>
<div>
<h1>bla bla</h1>
</div>
</div>
EOT;
?>
Вы пробовали что-нибудь самостоятельно? Похож на довольно простой шаблон регулярного выражения. – treegarden
@treegarden Я довольно слабый с регулярным выражением. Моя трудность будет различать теги 'a',' b' и 'c'. Вероятно, я собирался спуститься по решению «DOMdocument», но, возможно, это не правильный путь. – user1032531
HTML с регулярным выражением? См. [Здесь] (http://stackoverflow.com/a/1732454/1864610). DOMdocument - это именно то, что нужно. –