2013-03-08 19 views
8

Tôi muốn chuyển đổi tất cả các thẻ html (& nbsp & gt & lt vv) để định dạng văn bản; Tôi đã thửPHP convert html   vào không gian, > đến> vv

html_entity_decode() 

nhưng nó sẽ trở lại? nếu & nbsp.

+1

Tại sao bạn không kiểm tra? Và cũng cuộn xuống trên trang hướng dẫn sử dụng vì có các hàm liên quan được liệt kê. – hakre

Trả lời

14

Sử dụng htmlspecialchars_decode là đối diện của htmlspecialchars.
Ví dụ từ trang tài liệu PHP:

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

không hoạt động cho   sử dụng html_entity_decode – rikiless

+1

@rikiless, giải pháp của RavatSinh đã giúp tôi xóa tất cả các thẻ HTML, bao gồm  . – Pamela

8

html_entity_decode() là đối diện của htmlentities() ở chỗ nó chuyển đổi tất cả các thực thể HTML trong chuỗi thành các ký tự có thể áp dụng.

$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

Sử dụng

 html_entity_decode()
thay vì
 html_entity_encode()

2

Nếu bạn kiểm tra hướng dẫn html_entity_decode():

Bạn có thể tự hỏi tại sao trim (html_entity_decode (' ')); không cắt giảm chuỗi thành chuỗi trống, đó là vì thực thể ' ' không phải là mã ASCII 32 (được cắt bằng trim()) nhưng mã ASCII 160 (0xa0) trong ký tự ISO 8859-1 mặc định .

Bạn có thể tổ html_entity_decode() chức năng của bạn bên trong một str_replace() để ASCII # 160 đến một không gian:

<?php 

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

?> 
1

Tôi biết câu trả lời của tôi đang đến trong rất trễ nhưng nghĩ rằng nó có thể giúp đỡ người khác. Tôi thấy rằng cách tốt nhất để trích xuất tất cả các ký tự đặc biệt là sử dụng utf8_decode() trong php. Ngay cả khi giao dịch với &nbsp; hoặc bất kỳ ký tự đặc biệt nào khác đại diện cho việc sử dụng khoảng trắng trống utf8_decode().

Sau khi sử dụng utf8_decode(), người ta có thể thao tác các ký tự này trực tiếp trong mã. Ví dụ, trong đoạn mã sau, hàm clean() thay thế &nbsp; bằng một ô trống. Sau đó, nó thay thế tất cả các khoảng trắng thừa bằng một khoảng trắng đơn bằng cách sử dụng preg_replace(). Các khoảng trắng đầu và cuối được xóa bằng cách sử dụng 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; 

Xin chào thế giới! lorem ipsum.