簡體   English   中英

正則表達式刪除div標簽,但不刪除其內容

[英]Regex to remove div tags but not their content

假設這是我的HTML:

<ul>
    <li><div style="width: 10em;">Hello</div><div class="ble"></div></li>
</ul>

我想得到這個:

<ul>
    <li>Hello</li>
</ul>

如您所見,所有div的開始和結束標簽都已刪除,但未刪除其內容!

這是我到目前為止的內容:

$patterns = array();
$patterns[0] = '/<div.*>/';
$patterns[1] = '/</div>/';
$replacements = array();
$replacements[2] = '';
$replacements[1] = '';
echo preg_replace($patterns, $replacements, $html);

取代'/<div.*>/''/<div.*?>/'這將刪除的貪婪行為*和匹配第一>遭遇。

另外,您需要在模式中轉義反斜杠以匹配結束標記-使用:

'/<\/div>/';

我先將<div[^>]*></div[^>]*>替換為空。 盡管我對特定的PHP正則表達式引擎了解甚少,但以下sed工作:

pax> cat qq.in
<ul>
    <li><div style="width: 10em;">Hello</div><div class="ble"></div></li>
</ul>

pax> cat qq.in | sed -e 's/<div[^>]*>//g' -e 's/<\/div>//g'
<ul>
    <li>Hello</li>
</ul>

實際上,您應該可以將其組合到一個regex </?div[^>]*>

pax> cat qq.in | sed -r -e 's_</?div[^>]*>__g'
<ul>
    <li>Hello</li>
</ul>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM