English 中文(简体)
preg_replace to remove empty tags but keep the end of blockquotes
原标题:

I made this expression to remove all empty (inluding tags with just whitespace) tags in the page.

$content =  preg_replace( /<[^/>]*>([s]?)*</[^>]*>/ ,   , $content);

It worked a treat until it had to deal with content like this...

 <blockquote>
<p >foo bar</p>
</blockquote>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

and it outputs it as...

<blockquote>
<p >this is a test for the pluggin</p>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

Thus removing the </blockquote>.

I have been scratching my head on this one and can t get it working. Can anyone see an obvious solution other than specifying what tags it should format? I should also say that it is formatting the_content on a wordpress post.

最佳回答

Regexps and HTML are not a good match, since HTML is not a regular syntax, and there are no end of edge cases and gotchas. You ll be better off using an HTML parser such as this one and inspecting/manipulating the DOM object.

问题回答

You might also like to take a look at HTML Purifier, which is more advanced than Simple HTML Dom, if you find it doesn t get all the tags.





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签