[英]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.