Bu çözüm, regex kullanır. Karmaşık olup olmadığına karar vermene izin vereceğim.
$out = preg_replace("/(?<=^|>).*?(?=<|$)/s", "", $in);
en yıkmak edelim:
(?<=^|>)
: Bir olan ileriye dönük. Aslında eşleşmedi, ama hala orada olmalı. Dize başlangıcı (^
) veya hazır >
ile eşleşir.
.*?
: Her şeyle eşleşir (s
değiştirici, yeni satır eklemeyi sağlar). Soru işareti onu tembelleştirir - mümkün olduğunca az karakterle eşleşir. :
(?=<|$)
: Bir bakış. Ya literal <
veya dize sonu ($
) ile eşleşir. >
ve <
arasındaki her şeyin silinmesi için
Bu, hiçbir şey (""
) ile değiştirilir. Çalışan bir demo here görülebilir. Beyaz boşlukları korumaz, böylece bir süper uzun çizgi ile sonuçlanırsınız.
DÜZENLEME:
: Eğer giriş her zaman HTML etiketleri sarılmış olacağını biliyorsanız dize bit başında ve sonunda düşünmek zorunda olmadığı sen kendin için bile basit yapabilirsiniz
$out = preg_replace("/>.*?</s", "><", $in);
Bu varyant başlangıçta veya sonunda metinle giriş için çalışmayacaktır - örneğin , Hello<b></b>!
haline gelir.
Bir DOM ayrıştırıcısı kullanın. – David
Veya bu https://code.google.com/p/phpquery/ adresini deneyin. –