2013-03-09 12 views
7

Mam ciąg:PHP znaczniki usuwania HTML z ciągiem

<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ...</p> 

i chcesz chcesz usunąć tag

<p justify;"=""></p> 

mój kod:

$content = strip_tags($text, '<p>'); 

ale ja dostać pusty ciąg: string(0) "", co robię źle ?

Odpowiedz

4

Ponieważ HTML jest źle sformatowany, prawdopodobnie trzeba będzie napisać własne wyrażenie regularne, aby usunąć tagi lub oczyścić kod HTML przed próbą usunięcia tagów.

można spróbować to usunięcie wszystkiego, co „wygląda” znacznika:

$str = preg_replace("/<.*?>/", " ", $str); 
+0

Tak źle , to jest wordpress formowanie – Wizard

+0

Naprawdę? Dlaczego wordpress używa niedopasowanych cytatów? –

+0

To działa dla mnie. strip_tags konwertuje tylko znaczniki na inne znaki. –

15

spróbować umieścić go jak ten

$content = strip_tags($text); 

Albo można zrobić to z wyrażenia regularnego tak:

$content = preg_replace('/<[^>]*>/', '', $text); 

przez ten $content = strip_tags($text, '<p>'); pozwalasz tag w stri <p> ng.

Aby uzyskać więcej informacji znajduje się w odnośniku http://php.net/manual/en/function.strip-tags.php

+0

To nie jest rozwiązanie, ponieważ jego HTML jest źle sformatowany. –

+0

To nie działa. Właśnie przetestowałem to na moim pudełku i ten pierwszy niezrównany cytat jest problemem.Nawet ten głupkowaty średnik współpracuje z strip_tags, o ile nie miał tego pierwszego cytatu ... –

+0

@MihaiIorga Ya zgadzam się z tobą. To może być błąd literówki. – Toretto

2

Ponieważ HTML nie jest prawidłowo sformatowany można wybrać preg_replace() podejście:

$text = '<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... </p>'; 
$content = preg_replace('/<[^>]*>/', '', $text); 
var_dump($content); 
// string(108) "Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... " 

Codepad Example

Na strip_tags() docs ona mówi: Ponieważ strip_tags () w rzeczywistości nie sprawdza poprawności HTML, częściowe lub uszkodzone tagi mogą spowodować usunięcie większej ilości tekstu/danych niż oczekiwano.

Również drugi parametr dotyczy $allowable_tags.

-3

To może pomóc php-strip-tags

ok, jeśli prep_replace nie działa następnie spróbuj użyć jQuery aby usunąć tagi html.
Zobacz ten post javascript-how-to-strip-html-tags

+0

Bro zobacz mój wpis, używam 'strip_tags' – Wizard

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej jest dołączyć istotne części odpowiedzi tutaj i podać link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – Bohemian

+0

Dzięki @Bohemian będzie o tym pamiętać. Jestem nowy w Stackoverflow! – h4kl0rd

3

To usunie każdą rzecz - tagi, ASCII, przerwy linii, ale czysty tekst:

strip_tags(preg_replace('/<[^>]*>/','',str_replace(array("&nbsp;","\n","\r"),"",html_entity_decode($YOUR_STRING,ENT_QUOTES,'UTF-8')))); 
+0

Dlaczego nie pracować? wszystkie rozwiązania nie działają .... – delive