php正则表达式过滤某些HTML标签代码

html-css017

php正则表达式过滤某些HTML标签代码,第1张

如果只要 <b>标签,不用“过滤”的方法,用“提取”的方法更简单。

$str = '<img src="xxx"><b>aaa</b><br>\n<b>b\nbb</b><span style="color:#FF0000">yyy</span>'

$pattern = '/<b>(((?!<\/b>).)*)<\/b>/mi'

preg_match_all($pattern, $str, $matches, PREG_SET_ORDER)

print_r($matches)

输出

Array

(

[0] =>Array

(

[0] =><b>aaa</b>

[1] =>aaa

[2] =>a

)

[1] =>Array

(

[0] =><b>b\nbb</b>

[1] =>b\nbb

[2] =>b

)

)

$matches[0][0],$matches[1][0] 是你想要的结果?

恕我直言(奥巴马更爱说这个词),你对正则表达式和你提供的这些代码的作用一无所知

[ATTACHMENT]和正则表达式没有关系,推断是DISCUZ等用到的BBCODE,你的目的就是用正则表达式把<a href="xxx.php?filename=abc.jpg">图片</a>这样的HTML替换成

[ATTACHMENT]abc.jpg[/ATTACHMENT]

So,

你提供的$_pattern的0和1元素分别是正则表达式和要替换成的字符。

简要说一下,匹配的正则表达式里的()中间的内容可以在被替换的字符串中的$1,$2等表示。

看正则表达式有3个括号,第二个和第三个分别匹配文件名和扩展名

所以,要替换成的字符串中的$2和$3将是文件名和扩展名

于是,

以上的实例被替换的结果是

[ATTACHMENT]abc.jpg[/ATTACHMENT]

at last and the point

系统学习正则表达式,他是非常有用的

by the way,20分对我来说根本不算什么,写这几句话的功夫20元都挣上了

只是想帮帮你

一定要用正则么?PHP的函数可以么?

<?php

$str = '<br />sdfasdfsdfa<a>sdfasdf<br>dsfasdfasdf<li>sdfa'

$str = strip_tags($str, '<br>')

echo $str

?>

会比用正则效率高不少