用正则表达式替换内容 php

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

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

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

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

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

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

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

就是这个函数:preg_match_all

echo preg_replace("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","<img src=‘__PUBLIC__/face/\${1}.png‘>",$line[‘content‘]);
$line[‘content‘]   这个是我从数据库中取出的内容,
"<img src=‘__PUBLIC__/face/\${1}.png‘>"  这个是我将要替换的图片地址,比如我的图片地址是这样的<img src="__PUBLIC__/face/f_013.png">这里面有一个非常重要的知识点: "\${1}"   它就是那个存放在数据库里面表情的字符串。\${1} = f_013 

我这里有我替换的一个完整代码:
<?php$result = array();
     $n = preg_match_all("/(?:\[)(f_.[0-9]{1,3})(?:\])/i",$line[‘content‘], $result); /*返回查找到符合条件的字符串的个数*/
     if($n == 0 || $n == false)   /*如果是0或者false就说明没有表情*/   {
        echo $line[‘content‘];
     }else   {
       echo preg_replace("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","<img src=‘__PUBLIC__/face/\${1}.png‘>",$line[‘content‘]);
     }
     ?>
时间: 2024-10-26 15:03:45

用正则表达式替换内容 php的相关文章

VS 正则表达式替换内容

很少使用VS的正则替换功能,最近因为需要添加大量的默认值,但是又不想重新类,就想到了这个. 1.替换带有///描述的属性 查找的正则表达式: /// <summary>((.)*((.|\n){1,2})){1,2}///(.{1,})((.)*((.|\n){1,2})){1,2}/// </summary>((.)*((.|\n){1,2})){1,2}public string (.{1,}) { get; set; } 替换的正则表达式: private string _$

用正则表达式替换指定标签中的内容

用正则表达式替换指定标签中的内容,也是在工作中遇到的就顺手记了下来 string sXML = "ABCDEFCSF<p>123123</p>KOPL";//现在我要去掉P标签中的内容,实现 ABCDEFCSFKOPL这样的效果. 引入:using System.Text.RegularExpressions; Regex rg = new Regex("<pict>.*</pict>"); sXML = rg.Rep

notepad++正则表达式替换字符串详解

表达式 说明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字.[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a&q

[转]notepad++正则表达式替换字符串详解

原文:http://blog.csdn.net/qinboecjtu/article/details/6035028 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: 表达式 说明 /t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "

EditPlus正则表达式替换字符串详解

网上搜集了些实例 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: Expression Description\t Tab character.\n New line.. Matches any character.| Either expression on its left and right side matc

浅析正则表达式-替换原则

浅析正则表达式-替换原则 --> 一.开篇 最近经常用到替换的东西所以就出来整理下,这里要分享的是正则表达式里面的替换原则,首先要声明的是这里提及到的替换原则是.NET里面的正则表达式的替换原则.先看一下替换的定义替换是只能在替换模式中识别的语言元素. 它们使用正则表达式模式定义全部或部分用于替换输入字符串中的匹配文本的文本. 替换模式可以包含一个或多个替换以及本文字符.其实个人总结的替换的大致是这样的,替换的内容永远都是原文本的内容,通过正则表达式匹配出来文本,来通过组名或者组号来进行对原文本

正则表达式替换和不包含指定字符串

需求 展示一段文字,段落中有些特殊标记的人名.刊名等,格式大体是:“(作者<刊名>其他)”,某个字段可以为空,比如作者为空. 那么对应的正则大体是这样的   '\((.*?)<(.*?)>.*?\)' 最终的效果是 “(<a>作者</a><<a>刊名</a>>其他)” 第一版 1 class Program 2 { 3 static string str = @"<p>[例]当夫广州之首难,武汉兴师,

linux 给文件替换字符串/替换内容/替换某行 (shell,sed)

本文是要讲linux 不打开文档/文件的情况下,替换文本内容.打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 . 话题相关#linux 文件替换字符串#sed 字符串替换#shell 文件替换某行#linux 替换指定行内容#linux 替换某行 linux一般用sed来替换文本到指定行. 基本语法 s (substitute)为查找替换命令 # 在输出或打印中,替换字符串.并不改变原文件内容sed '作用范围s/替换查找目标/替换成为/替换目标option'

java replaceall 使用正则表达式替换单等号,不替换其他相关的等号。

写项目需要将公式配置到数据库中,取出后根据公式规则进行比较,由于公式的等于是用单等号,在java中无法直接使用,故需要将单等号替换成双等号,单又不能影响大于等于以及其他形式.故果断选择正则表达式替换.以此留痕,备用. @org.junit.Test public void test4() { String expression="a = 0"; String aa=""; aa=expression.replaceAll("([^=><])=(