2013-03-09 31 views
7

Tôi có chuỗi:PHP tags tháo html từ chuỗi

<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> 

và muốn muốn xóa thẻ

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

mã của tôi:

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

nhưng tôi nhận được chuỗi rỗng: string(0) "", Tôi đã làm gì sai ?

Trả lời

4

Vì HTML được định dạng kém nên có thể bạn cần viết regexp của riêng mình để xóa thẻ hoặc xóa HTML trước khi cố gắng xóa thẻ.

Bạn có thể thử này để loại bỏ tất cả những gì "trông giống như" một tag:

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

Yep kém , đây là wordpress formating – Wizard

+0

Thật sao? Tại sao wordpress sử dụng một trích dẫn chưa từng có? –

+0

Điều này phù hợp với tôi. strip_tags chỉ chuyển đổi các thẻ thành các ký tự khác –

15

Cố gắng đặt nó như thế

$content = strip_tags($text); 

Hoặc bạn có thể làm điều đó với biểu hiện thường xuyên như thế:

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

By $content = strip_tags($text, '<p>'); này, bạn đang cho phép thẻ <p> trong STRI ng.

Để biết thêm thông thấy liên kết http://php.net/manual/en/function.strip-tags.php

+0

Và đó không phải là giải pháp vì HTML của anh bị định dạng sai. –

+0

Nó không hoạt động. Tôi vừa thử nghiệm nó trên hộp của tôi và báo giá chưa từng có đầu tiên là vấn đề.Ngay cả việc bán kết cục có tác dụng với strip_tags, miễn là anh ta không có câu nói đầu tiên đó ... –

+0

@MihaiIorga Ya đồng ý với bạn. Nó có thể là lỗi chính tả. – Toretto

2

Kể từ HTML của bạn chưa được định dạng đúng cách bạn có thể chọn một cách tiếp cận preg_replace():

$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

On strip_tags() docs nó nói: Vì strip_tags () không thực sự xác thực các thẻ HTML, một phần hoặc bị hỏng có thể dẫn đến việc xóa nhiều văn bản/dữ liệu hơn mong đợi.

Tham số thứ hai là dành cho $allowable_tags.

-3

này có thể giúp php-strip-tags

ok nếu prep_replace không làm việc thì hãy thử sử dụng jquery để loại bỏ các thẻ html.
thấy bài đăng này javascript-how-to-strip-html-tags

+0

Bro xem bài đăng của tôi, tôi đang sử dụng 'strip_tags' – Wizard

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần quan trọng của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – Bohemian

+0

Cảm ơn @Bohemian sẽ ghi nhớ điều đó. Tôi mới vào stackoverflow! – h4kl0rd

3

này sẽ loại bỏ tất cả mọi thứ - thẻ, ascii, ngắt dòng nhưng văn bản thuần túy:

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

Tại sao không hoạt động? tất cả các giải pháp không hoạt động .... – delive

Các vấn đề liên quan