php关键字仅替换一次的实现函数

对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了php相关函数文档,发现php本身是没有函数实现这个功能的,所以不得不自己解决了。总结了几种可行方法,小记一下!
(1)使用 preg_replace 函数实现这个功能,因为 preg_replace 这个函数本身是可以实现控制替换次数的,所以一开始就想到他了,具体实现方法如下:

//可以实现替换次数的控制,不仅限于只替换一次,比如$limit为2的时候表示一个词出现很多吃的时候仅替换2次,-1表示全部替换。$search 和 $replace 都可以是字符串或者数组,但必须对应
function str_replace_limit($search,$replace,$content,$limit=-1){
  if(is_array($search)){
    foreach ($search as $k=>$v){
      $search[$k]='`'.preg_quote($search[$k],'`').'`';
    }
  }else{
    $search='`'.preg_quote($search,'`').'`';
  }
  //把图片描述去掉
  $content=preg_replace("/alt=([^ >]+)/is",'',$content);
  return preg_replace($search,$replace,$content,$limit);
}

(2)使用substr_replace 函数来实现,不过这里仅能实现仅一次替换

//首先找到关键字所在位置,然后使用 substr_replace(系统函数)进行替换操作
function str_replace_once($search,$replace,$content){
  //把图片描述去掉
  $content=preg_replace("/alt=([^ >]+)/is",'',$content);
  $pos=strpos($content,$search);
  if($pos===false){
    return $haystack;
  }
  return substr_replace($content,$replace,$pos,strlen($search));
} 

`以上就是PHP只替换一次以及控制替换次数的实现函数,希望对大家的学习有所帮助。

(0)

相关推荐

  • php 批量替换程序的具体实现代码

    代码如下: 复制代码 代码如下: <?php/***************************************************************************batch-replace, v1.1***************************************************************************file: batch-replace_utf8.phpfunctionality: 本程序可以扫描指定目录的所有文

  • PHP正则表达式替换站点关键字链接后空白的解决方法

    标题这样不知道合适不合适.具体的情况是这样的:网站要增加关键字链接功能,然后需要对文章的内容进行正则表达式匹配并替换,然后使用了preg_replace函数.替换的程序代码如下: function ReplaceKeyword($linkDefs,$content){ $linkMap = array(); /*foreach($linkDefs as $row) { $linkMap[] = explode(',', $row); }*/ $linkMap = $linkDefs; //把原有

  • php 批量替换html标签的实例代码

    1.把html元素全部去掉,或者保留某几个html标签 复制代码 代码如下: <?php$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';echo strip_tags($text);echo "/n"; // Allow <p> and <a>echo str

  • php正则替换变量指定字符的方法

    本文实例讲述了php正则替换变量指定字符的方法.分享给大家供大家参考.具体如下: 这里介绍三种常用方法. 方法一: <?php $str = preg_quote('(银子)'); $txt = '我的呢称(银子)'; echo preg_replace("/($str)/","<span style='color:#f00;'>$1</span>",$txt); ?> 方法二: <?php $str = quotemeta

  • PHP preg_replace() 正则替换所有符合条件的字符串

    需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的. 比如模版引擎解析模版.垃圾敏感信息过滤等等. 一般这种情况,我们用正则按我们的规则去匹配preg_match.替换preg_replace. 但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少. 根据前面说的,两种场景:统计分析,用匹配:处理用替换. PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹

  • php获取当前网址url并替换参数或网址的方法

    一是PHP获取当前页面的网址: 复制代码 代码如下: //获得当前的脚本网址 function GetCurUrl() { if(!empty($_SERVER["REQUEST_URI"])) { $scriptName = $_SERVER["REQUEST_URI"]; $nowurl = $scriptName; } else { $scriptName = $_SERVER["PHP_SELF"]; if(empty($_SERVER[

  • PHP 替换模板变量实现步骤

    1.首先需要打开一个文件.这里用到了PHP ->fopen();函数 定义和用法 fopen() 函数打开文件或者 URL. 如果打开失败,本函数返回 FALSE. 函数原型: fopen(filename,mode,include_path,context) http://www.jb51.net/w3school/php/func_filesystem_fopen.asp.htm 说明 fopen() 将 filename 指定的名字资源绑定到一个流上.如果 filename 是 "s

  • PHP正则替换函数preg_replace和preg_replace_callback使用总结

    在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace(),加上正则修饰符 /e,就能够执行强大的回调函数,实现模板引擎编译(其实就是字符串替换). 详情介绍参考博文:PHP函数preg_replace() 正则替换所有符合条件的字符串 应用举例如下: 复制代码 代码如下: <?php /**  * 模板解析类  */ class Template { public function compile($template) { // if逻辑   $template

  • PHP的substr_replace将指定两位置之间的字符替换为*号

    复制代码 代码如下: $username = "zongzi"; echo substr_replace($username,'**','1','2'); 定义和用法 substr_replace() 函数把字符串的一部分替换为另一个字符串. 语法substr_replace(string,replacement,start,length) 参数 描述 string 必需.规定要检查的字符串. replacement 必需.规定要插入的字符串. start 必需.规定在字符串的何处开始

  • PHP html标签正则替换并可自定义正则规则

    复制代码 代码如下: <?php function pregstring($str){ $strtemp = trim($str); $search = array( "|'|Uis", "|<script[^>].*?</script>|Uis", // 去掉 javascript "|\[字定义\].*\[/字定义\]|Uis", // 去掉缩略图 "|<[\/\!].*?[^<>]*

  • 如何在PHP中使用正则表达式进行查找替换

    1. preg_match - 执行一个正则表达式匹配int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )搜索subject与pattern给定的正则表达式的一个匹配. pattern:要搜索的模式,字符串类型.subject :输入字符串. matches:如果提供了参数matches,它将被填充为搜索结果. $matche

  • php 字符串替换的方法

    这几天,工作中遇到一个小问题,有一内容类型的字段存储的是语言,因为这写数据是用Excel导入做的,所以为了处理简单,很多的语言就用逗号分隔,把所有语言做一个字符串,这样存入的时候就简单的多.但是由于当初数据质量的问题,有一部分"Chinese"是 "Mandarin Chinese",现在需要把所有的"Mandarin Chinese"改为"Chinese". 这就需要把一个字符串中的部分字符串替换掉.对于这样的问题,一般就是

  • php preg_match_all结合str_replace替换内容中所有img

    采集回来的图片img标签中,有好多javascript脚本和无用的信息,必需过替换自己想要的,比如alt.先看看要过滤的内容,我随便复制出来: 复制代码 代码如下: sdfsdfsdf<img alt="3568df.com靓图" src="http://www.aaa.com/upimg /080330/120D1232295023X0.gif" src="http://www.eee.com/upimg/080330 /120D123229502

  • PHP 字符串正则替换函数preg_replace使用说明

    1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", $msg); -----删除<style></style>和中间的部分 $msg = preg_replace("/<[^>]+>/", "", $msg); -----是删除<>和中间的内容 i (PCRE_CAS

  • PHP中替换换行符的几种方法小结

    第一种: 复制代码 代码如下: <?php ?$str="this is a test \n"; $patten = array("\r\n", "\n", "\r"); ?//先替换掉\r\n,然后是否存在\n,最后替换\r $str=str_replace($order, "", $str); ?> //php 有三种方法来解决 //1.使用str_replace 来替换换行 $str =

  • 浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)

    php关键词替换的类(避免重复替换,保留与还原原始链接) 本节主要内容: 一个关键词替换的类 主要可以用于关键词过滤,或关键词查找替换方面. 实现过程分析: 关键词替换,其实就是一个str_replace()的过程,如果是单纯的str_replace面对10W的关键词,1W字的文章也只需要2秒左右. 问题所在: 关键词替换了不只一次,比如a需要替换成<a>a</a>,但结果可能是<a><a>a</a></a>等这样. 为此,需要一个方

随机推荐