用PHP替换数据库中的一些字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用PHP替换数据库中的一些字符相关的知识,希望对你有一定的参考价值。
有一张表 字段名是value 里面有<div> <table>等段落标签 这样前台调用这个value的时候 里面的这些标签就会把前台的页面搞乱 所以我想用php语句把这些标签都替换掉 涉及到的标签有<div>、</div>、<table>、</table>、<tbody>、</tbody>、<tr>、</tr>、<td>、</td>谢谢啦~
这个字段里不仅仅只有这几对标签 还有<font> 等样式
这是我修改后的,比较复杂点,但是可以用。
我的思想是:将输入字符串分离,一个一个进行查询替换。
<?php
function n2n($input)
$s=array('1','2','3','4','5','6','7','8','9','0');
$r=array("7","8","9","0","1","2","3","4","5","6");
$length=strlen($input);
for($i=0;$i<$length;$i++)
for($j=0;$j<10;$j++)
if($s[$j]==$input[$i])
$input[$i]= str_replace($s[$j], $r[$j], $input[$i]);
break;
return $input;
$str="1234abc56";
echo n2n($str);
?> 参考技术B 有两种方法,一是用strip_tags这个函数或者用网上的一些自定义函数来去掉html标签。另一种方法是用正规(/<(.*?)>/s和/<\/(.*?)>/s)来去掉。本回答被提问者采纳
用php中的随机数字替换字符串中的奇数位置
【中文标题】用php中的随机数字替换字符串中的奇数位置【英文标题】:Replace odd positions in string with a random digit in php 【发布时间】:2020-12-26 02:33:01 【问题描述】:我有一个字符串,我只想用随机数字替换奇数位置。
例如,字符串是'123456'
。现在我想要的输出是'528496'
;
请注意,奇数位的数字 1,3,5 被随机数字 5,8,9 替换。
我知道如何使用 PHP 循环来做到这一点,但想知道是否可以使用正则表达式来完成。
我在网上找到了以下两个相关的解决方案,但仍然无法使其工作。
解决方案 1
echo preg_replace('/(.)./', '$1 ', $str);
解决方案 2
echo preg_replace_callback('/\d/', function()
return chr(mt_rand(97, 122));
, $str);
PS:我试图对这些问题发表评论,但由于我的声誉只有 5,所以我无法:(
【问题讨论】:
试试preg_replace_callback('/.(.)/s', function($m) return chr(mt_rand(48, 57)) . $m[1]; , '123456');
,见3v4l.org/8dDmL
您特别要求使用正则表达式,但也可以使用 str_split、array_map、如果奇数替换取模,重新组合在一起3v4l.org/h8U0A
不用chr()
,可以用mt_rand(0, 9)
。从 PHP 7.4 开始,您甚至可以编写:echo preg_replace_callback('/.(.)/', fn($m) => rand(0,9) . $m[1], '123456');
我请求你们三个停止发布答案,因为在采取任何行动之前,cmets 已被清除,所以我不知道你们是否收到了 ping。请决定是否要将您的评论转移到答案。无论如何,请删除您正在解析的 cmets。
【参考方案1】:
替换奇数索引处的字符
echo preg_replace_callback('/.(.|$)/', function ($matches)
return rand(0, 9) . $matches[1];
, $str);
替换偶数索引处的字符
echo preg_replace_callback('/(.)./', function ($matches)
return $matches[1] . rand(0, 9);
, $str);
备注
如果您的 PHP 版本低于 7.1,则不应使用 rand()
,因为它是一个不能正常工作的坏函数。请改用mt_rand(0, 9)
。
如果您需要确保随机数的加密安全,请改用random_int(0, 9)
。该函数在 PHP 7 中可用。
【讨论】:
谢谢!它工作得很好,但是如果我想替换偶数位置而不是奇数,需要改变什么?【参考方案2】:您可以在完全不引用匹配字符串的情况下执行替换。只保留必须替换的单个字符。
代码:(PHP7.4 Demo)
替换奇数位置:
echo preg_replace_callback(
'/^.|.\K./',
fn() => rand(0,9),
'1234567'
);
替换偶数位置:
echo preg_replace_callback(
'/.\K./',
fn() => rand(0,9),
'1234567'
);
【讨论】:
或者因为我们正在处理一个字节编码的字符:echo preg_replace_callback('~..~', fn($m) => mt_rand(0,9) . $m[0][1], $str);
以上是关于用PHP替换数据库中的一些字符的主要内容,如果未能解决你的问题,请参考以下文章