Home  >  Article  >  php教程  >  用正则表达式替换内容 php,正则表达式替换php

用正则表达式替换内容 php,正则表达式替换php

WBOY
WBOYOriginal
2016-06-13 08:54:261191browse

用正则表达式替换内容 php,正则表达式替换php

以前做一个项目,就是有一个问答的页面,比如说在回答或者提问的内容中插入表情。写到内容里的是表情图片的名字(而且是不带后缀的,比如:f_002.png)表情包放在项目里,我需要在取除内容的时候将里面的表情名字替换成图片。

存到数据库中的内容是这样的:   不知道[f_013]    (最后面的这个[f_013]就是表情图在数据库中存放的形式)

我需要做的就是从数据库中取出内容,并且把内容中的像这样的字符 [f_013] 处理成图片地址,很显然这里需要用到正则表达式。

1.首先我得先找到这个字符串

$rule = <span>"</span><span>/(?:\[)(f_.[0-9]{1,3})(?:\])/i</span><span>"</span>;

这个正则匹配可以帮我找到表情的字符串

2.找到后就是把这个字符串换成表情图片存放的地址,这里用到了一个函数就是正则表达式的替换。

就是这个函数:preg_match_all

echo preg_replace(<span>"</span><span>/(?:\[)(f_.[0-9]{1,3})(?:\])/i</span><span>"</span>,<span>"</span><span><img  src='__PUBLIC__/face/\${1}.png' alt="用正则表达式替换内容 php,正则表达式替换php" ></span><span>"</span>,$line[<span>'</span><span>content</span><span>'</span>]);
$line['content']   这个是我从数据库中取出的内容,
"<img  src='__PUBLIC__/face/\${1}.png' alt="用正则表达式替换内容 php,正则表达式替换php" >"  这个是我将要替换的图片地址,比如我的图片地址是这样的<img  src="__PUBLIC__/face/f_013.png" alt="用正则表达式替换内容 php,正则表达式替换php" ><br />这里面有一个非常重要的知识点: "\${1}"   它就是那个存放在数据库里面表情的字符串。<br />\${1} = f_013 <br /><br />我这里有我替换的一个完整代码:
<em id="__mceDel"><span><?php<br />$result</span> = <span>array</span><span>();
     </span><span>$n</span> = <span>preg_match_all</span>("/(?:\[)(f_.[0-9]{1,3})(?:\])/i",<span>$line</span>['content'], <span>$result</span><span>); /*返回查找到符合条件的字符串的个数*/
     </span><span>if</span>(<span>$n</span> == 0 || <span>$n</span> == <span>false</span><span>)   /*如果是0或者false就说明没有表情*/<br />   {
        </span><span>echo</span> <span>$line</span>['content'<span>];
     }</span><span>else<br /></span><span>   {
       </span><span>echo</span> <span>preg_replace</span>("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","<img  src='__PUBLIC__/face/\${1}.png' alt="用正则表达式替换内容 php,正则表达式替换php" >",<span>$line</span>['content'<span>]);
     }
     </span>?></em>

 

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
Previous article:php 安全过滤Next article:PHP学习笔记