2009-07-10 56 views
47

Xin chào, tôi cần xóa tất cả hình ảnh khỏi chuỗi và tôi không thể tìm đúng cách để làm điều đó.PHP - xóa <img> thẻ từ chuỗi

Dưới đây là những gì tôi tryed, nhưng nó không hoạt động:

preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
echo $content; 

Bất kỳ ý tưởng?

+3

$ content = preg_replace (..., $ nội dung); –

Trả lời

124

Hãy thử xóa \ ở phía trước >.

Chỉnh sửa: Tôi vừa kiểm tra regex của bạn và nó hoạt động tốt. Đây là những gì tôi đã sử dụng:

<? 
    $content = "this is something with an <img src=\"test.png\"/> in it."; 
    $content = preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
    echo $content; 
?> 

Kết quả là:

 
this is something with an (image) in it. 
+3

Bạn có thể thực hiện điều này ngoại trừ (hình ảnh) nó sẽ thay thế bằng alt của hình ảnh? – MysteryDev

12

tôi sẽ đề nghị sử dụng phương pháp strip_tags.

17

Bạn cần phải gán kết quả trở lại $contentpreg_replace không sửa đổi chuỗi gốc.

$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
7

Sean nó hoạt động tốt tôi đã chỉ được sử dụng mã này

$content = preg_replace("/<img[^>]+\>/i", " ", $content); 
echo $content; 

// kết quả nó chỉ có các văn bản đơn giản. Nó hoạt động !!!

1

Tôi muốn hiển thị 300 từ đầu tiên của một tin bài như một bản xem trước, không may có nghĩa là nếu một câu chuyện có hình ảnh trong 300 từ đầu tiên thì nó được hiển thị trong danh sách xem trước thực sự gây rối với bố cục của tôi. Tôi đã sử dụng đoạn mã trên để ẩn tất cả các hình ảnh khỏi chuỗi được lấy từ cơ sở dữ liệu của tôi và nó hoạt động tuyệt vời!

$news = $row_latest_news ['content']; 
$news = preg_replace("/<img[^>]+\>/i", "", $news); 
if (strlen($news) > 300){ 
echo substr($news, 0, strpos($news,' ',300)).'...'; 
} 
else { 
echo $news; 
} 
+0

Nhận xét sử dụng định dạng đánh dấu mini: [link] (http://example.com) _italic_ ** bold ** 'code'. Tác giả bài đăng sẽ luôn được thông báo về nhận xét của bạn. Để thông báo cho người nhận xét trước, hãy đề cập đến tên người dùng của họ: – xavip

-4
$content = strip_tags($content, '<img>'); 

là một cách sạch hơn và đơn giản hơn

+3

Tham số thứ hai cho strip_tags() là cho các thẻ được phép, không chỉ định thẻ nào cần xóa. Có thực sự là một phiên bản nghịch đảo nhưng không có (theo như tôi biết). – twistedpixel

-1
$this->load->helper('security'); 
$h=mysql_real_escape_string(strip_image_tags($comment)); 

Nếu người dùng đầu vào

 
<img src="#"> 

Trong bảng cơ sở dữ liệu chỉ cần chèn nhân vật # này

trình cho tôi

-3

chỉ đơn giản là sử dụng lớp form_validation của CodeIgniter:

strip_image_tags($str). 

$this->load->library('form_validation'); 
$this->form_validation->set_rules('nombre_campo', 'label', 'strip_image_tags'); 
+3

Anh ta có nói rằng anh ta đang sử dụng CodeIgniter không? – galdikas

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