2013-03-08 13 views
8

że chcemy przekształcić wszystkie znaczniki HTML (& nbsp & GT & LT etc.) na format tekstowy; Mam spróbowaćPHP konwersji HTML   do przestrzeni > do> itp

html_entity_decode() 

, ale to się zwróci? jeśli & nbsp.

+1

Dlaczego nie testujesz? Przewiń także stronę podręcznika, ponieważ są tam wymienione powiązane funkcje. – hakre

Odpowiedz

14

Zastosowanie htmlspecialchars_decode jest przeciwieństwem htmlspecialchars.
Przykład ze strony dokumentacji PHP:

$str = '<p>this -&gt; &quot;</p>'; 
    echo htmlspecialchars_decode($str); 
    //Output: <p>this -> "</p> 
+5

nie działa dla   użyj html_entity_decode – rikiless

+1

@rikiless, rozwiązanie RavatSinh działało dla mnie przy usuwaniu wszystkich znaczników HTML, w tym  . – Pamela

8

html_entity_decode() jest przeciwieństwem htmlentities(), ponieważ konwertuje wszystkie elementy HTML w łańcuchu na ich odpowiednie znaki.

$orig = "I'll \"walk\" the <b>dog</b> now"; 

$a = htmlentities($orig); 

$b = html_entity_decode($a); 

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now 

echo $b; // I'll "walk" the <b>dog</b> now 
3

Zastosowanie

 html_entity_decode()
zamiast
 html_entity_encode()

2

Jeśli zaznaczysz instrukcję html_entity_decode():

można się zastanawiać, dlaczego wykończenia (html_entity_decode (' ')); nie redukuje łańcucha znaków do pustego ciągu, ponieważ encja " " nie jest kodem ASCII 32 (który jest usuwany przez trim()), ale kod ASCII kod 160 (0xa0) w domyślnym zestawie znaków ISO 8859-1 .

Można gniazdo czynność html_entity_decode() wewnątrz str_replace() do ASCII nr 160 do przestrzeni:

<?php 

echo str_replace("\xA0", ' ', html_entity_decode('ABC &nbsp; XYZ')); 

?> 
1

Wiem, że moja odpowiedź przychodzi w bardzo późno, ale pomyślałem, że może to pomóc komuś innemu. Uważam, że najlepszym sposobem na wyodrębnienie wszystkich znaków specjalnych jest użycie utf8_decode() w php. Nawet do czynienia z &nbsp; lub jakimkolwiek innym specjalnym znakiem reprezentującym puste miejsce użyj utf8_decode().

Po użyciu utf8_decode() można manipulować tymi znakami bezpośrednio w kodzie. Na przykład w poniższym kodzie funkcja clean() zastępuje &nbsp; pustym hasłem. Następnie zastępuje wszystkie dodatkowe białe spacje pojedynczą białą spacją za pomocą preg_replace(). Prowadzące i końcowe białe przestrzenie są usuwane przy użyciu trim().

function clean($str) 
{  
    $str = utf8_decode($str); 
    $str = str_replace("&nbsp;", "", $str); 
    $str = preg_replace("/\s+/", " ", $str); 
    $str = trim($str); 
    return $str; 
} 

$html = "&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Hello world! lorem ipsum."; 
$output = clean($html); 
echo $output; 

Hello world! lorem ipsum.

Powiązane problemy