Home >Backend Development >PHP Tutorial >php求正则表达式写法

php求正则表达式写法

WBOY
WBOYOriginal
2016-06-23 13:38:07985browse

原文有以下几种可能:
[font="microsoft yahei" onclick="alert('b')"]中华人民共和国[/font]
[font="abc" onclick="alert('b')"]中华人民共和国[/font]
[font="microsoft yahei"]中华人民共和国[/font]
[font=abc onclick="alert('b')"]中华人民共和国[/font]
[font=abc]中华人民共和国[/font]

我想这样取,我只取出font=后面的字符,但不包括onclick(不一定是onclick,有可能是onfocus之类的)后面的字符还有中华人民共和国这几个字。
意思就是说,只取出字体名字,字体名字可以包含引号,但是字体后面如果有字符,都不取。

求正则表达式的写法。
我这样写,会连onclick以及后面的字符取到。
/\[font=(.*?)\](.*?)\[\/font\]/i


回复讨论(解决方案)

/\[font="([^\"]+?)".+?\](.*?)\[\/font\]/i
试试

/\[font="([^\"]+?)".+?\](.*?)\[\/font\]/i
试试


echo preg_replace('/\[font="([^\"]+?)".+?\](.*?)\[\/font\]/i', '$1@@@@$2', '[font="microsoft yahei"]中华人民共和国[/font]');
我试了一下,不行呢。

echo preg_replace('/\[font="([^\"]+?)".*?\](.*?)\[\/font\]/i', '$1@@@@$2', '[font="microsoft yahei"]中华人民共和国[/font]');

echo preg_replace('/\[font="([^\"]+?)".*?\](.*?)\[\/font\]/i', '$1@@@@$2', '[font="microsoft yahei"]中华人民共和国[/font]');


可以了。谢谢。
请问:[^\"] 这串字符代表什么呢?

另外,还有一种情况不能匹配就是
[font=microsoft]中华人民共和国[/font]
这一种,就是字体两边没有引号的。我自己试了一下没成功。麻烦再给看一下。谢谢。

[^\"]
[] 里面的是一个字符集合
^ 是除了什么什么之外
意思就是除了双引号之外的其他任何字符都匹配,\是转义,其实也可以不要
---------------------------------------------------------------------------------
[font=microsoft]中华人民共和国[/font]
'/\[font="*([^\"]+)"*.*?\](.*?)\[\/font\]/i'

牛掰

多谢各位的帮助。结帖

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn