Aralarında isteğe bağlı boşluk hiçbir şey ama hiçbir html etiketlerini kaldırmak için nasıl

4 Cevap php

Ben üzerinde bazı çok çirkin html ( düşünüyorum) temizlemek gerekir ve Tekrar tekrar ...

Ben aralarında isteğe bağlı boşluk içeren herhangi bir html etiketleri ortadan kaldırmak için güzel ve kolay bir preg_replace arıyorum. Sizin yardım büyük beğeni topluyor!

Oh, ve sadece bu güzelliği bulundu:

< p> < strong> < strong> < / Strong> < / Strong> < / P>

Bu da bir süre döngü içinde yaşamak gerekir gibi görünüyor.

4 Cevap

Bu konu geliyor tutar nasıl komik.

Don't go with regex. Try HTML Tidy yerine.

Eğer gerçekten bazı kod temizlemek için arıyorsanız, ben PHP Tidy sınıf öneririm. some examples o başlamanıza yardımcı olabilir vardır. (HTML Tidy Bu bir ön-uç Not)

Eğer gerçekten bir regex istiyorsanız, burada bir tane:

s:<(\w+)>\s*<\/\1>::g

İç içe davaları ortadan kaldırmak için bunu birden çok kez çalıştırın.

Derli toplu cevap oldu gibi Evet, görünüyor:

function cleanupcrap($html){
$tidy_config = array( 
	 'clean' => true, 
	 'output-xhtml' => true, 
	 'show-body-only' => true, 
	 'wrap' => 0,
	 ); 

	$tidy = tidy_parse_string($html, $tidy_config, 'UTF8'); 
	$tidy->cleanRepair(); 
	return $tidy->value;

}