高手看过来,正则表达式

redfox241 2009-06-15 11:47:47
如何用正则表达式将下面这句话转化为下面那句话。

<img src='http://img.diybl.com/ad/video2.gif' border=0 />




...全文
106 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
aimie 2009-07-28
  • 打赏
  • 举报
回复
还要注意一点是:按照W3C标准,HTML标记值是用英文双引号括起来的,并且标记是全小写的。
但是非标准的写法也很多。标记值如果没有空格,那可以不用引号,有空格必须有单引号或双引号。
zgycsmb 2009-07-04
  • 打赏
  • 举报
回复
jf
redfox241 2009-06-16
  • 打赏
  • 举报
回复
如果还要求带着点东西哪,比如说
转化为 [img]http://img.diybl.com/ad/video2.gif border=0[/img]
v轻扬v 2009-06-16
  • 打赏
  • 举报
回复
不好意思,其实我也是菜鸟,不知道什么是UBB?

正则其实不是太难学。弄个教程跟着教程举一反三多练习,一般就可以解决大部分问题。最难的也就是匹配HTML标签吧—般要用到一个什么平衡组的东东,对于这个平衡组我也没弄太明白。
v轻扬v 2009-06-16
  • 打赏
  • 举报
回复
上面可以达到目的,不过修正如下更准确:

$str="<img src='http://img.diybl.com/ad/video2.gif' border=0 />";
$pattern="/.+\s+src=('|\")(.+)('|\").+/";
echo preg_replace($pattern,"[img]\$2[/img]",$str);
v轻扬v 2009-06-16
  • 打赏
  • 举报
回复

<?php
$str="<img src='http://img.diybl.com/ad/video2.gif' border=0 />";
$pattern="/.+src='([^ ]+)'.+/";
echo preg_replace($pattern,"[img]\$1[/img]",$str);
?>
redfox241 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hzcenter 的回复:]
$ubbimg = preg_replace( "/\[img\](.+?)\[\/img\]/" , " <img src=\"\\1\" border=0>", "");
[/Quote]

to:hzcenter
哥们你理解错啦,我说的也不是很明白,就是将<img src='http://img.diybl.com/ad/video2.gif' border=0 /> 转化为,用正则表达式来实现。
hzcenter 2009-06-16
  • 打赏
  • 举报
回复
$ubbimg = preg_replace( "/\[img\](.+?)\[\/img\]/" , "<img src=\"\\1\" border=0>", "");
tfxg 2009-06-16
  • 打赏
  • 举报
回复
正則總讓我頭大
redfox241 2009-06-16
  • 打赏
  • 举报
回复
先谢谢 daniel75122
要是匹配<br> <p>。。。。。。。。</p>
<<font face="楷体_GB2312" size="3"><font color="#00ccff">没有打过的人</font></font>

这些关键字哪?
说白拉就是如何把这些东西用正则表达式转化为ubb;
v轻扬v 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 redfox241 的回复:]
连续匹配如何实现,

<img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850'> <img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850 </img>
变成
[img]http://postimg1.mop.com/200906/13/64…
[/Quote]


$str="<img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850'/><img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850'/>";
/***以上字符串我帮你稍作了修改,就是img一定要用斜杠形式/>来关闭标记,否则因为你的处理函数中有比较符大于号,要花大力气来判断哪个是关闭标记,哪个是比较符**/
$pattern="/<img\s+(.+\s+)*src=('|\")(.+)\\2(.*)\/>/Us";
echo preg_replace($pattern,"[img]\$1\$3\$4[/img]",$str);
v轻扬v 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 redfox241 的回复:]
如果还要求带着点东西哪,比如说
转化为 [img]http://img.diybl.com/ad/video2.gif border=0[/img]
[/Quote]


<?php
$str="<img src='http://img.diybl.com/ad/video2.gif' border=0 />";
$pattern="/.+\s+src=('|\")(.+)\\1(.+)\/>/";
echo preg_replace($pattern,"[img]\$2\$3[/img]",$str);
?>
lonelyriver 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tfxg 的回复:]
正則總讓我頭大
[/Quote]
同感
redfox241 2009-06-16
  • 打赏
  • 举报
回复
连续匹配如何实现,

<img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850'> <img src='http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850</img>
变成
[img]http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850[/img] [img]http://postimg1.mop.com/200906/13/64/3159164/200906132320295402.jpg' alt='点击查看楼主相册' border=0 onload='if(this.width>850)this.style.width=850[/img]




4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧