首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

去除非打印字符的preg_replace似乎也删除了所有外来字符

preg_replace是PHP中的一个函数,用于在字符串中进行正则表达式的替换操作。它的语法如下:

string preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 , int &$count ] )

其中,$pattern是一个正则表达式模式,$replacement是用于替换匹配到的内容的字符串,$subject是要进行替换操作的字符串。

根据提供的问答内容,我们需要去除非打印字符的preg_replace似乎也删除了所有外来字符。这句话的意思是,使用preg_replace函数去除非打印字符的同时,也删除了所有外来字符。

首先,我们需要了解什么是非打印字符。非打印字符是指在文本中无法直接显示出来的字符,例如空格、制表符、换行符等。在正则表达式中,可以使用特殊的元字符来表示非打印字符,如\s表示空白字符。

在preg_replace函数中,如果我们使用\s作为正则表达式模式,那么它将匹配到所有的非打印字符。如果我们将$replacement参数设置为空字符串,那么它将删除所有匹配到的非打印字符。

然而,根据提供的问答内容,使用preg_replace去除非打印字符的同时,也删除了所有外来字符。这意味着除了非打印字符之外,还删除了其他字符。这可能是由于正则表达式模式的问题导致的。

为了解决这个问题,我们可以使用更精确的正则表达式模式来匹配非打印字符,同时保留其他字符。例如,我们可以使用\x00-\x1F\x7F来匹配除了空格之外的所有非打印字符。然后,我们可以将$replacement参数设置为空字符串,以删除匹配到的非打印字符。

下面是一个示例代码:

代码语言:php
复制
$string = "Hello, \tWorld!\n";
$pattern = '/[\x00-\x1F\x7F]/';
$replacement = '';
$result = preg_replace($pattern, $replacement, $string);
echo $result;

输出结果为:

代码语言:txt
复制
Hello, World!

在这个示例中,我们使用正则表达式模式/\x00-\x1F\x7F/来匹配非打印字符,然后将其替换为空字符串。最终输出的结果是去除了非打印字符的字符串。

总结起来,preg_replace函数可以用于去除非打印字符,但需要注意正则表达式模式的准确性,以避免误删除其他字符。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP正则替换preg_replace函数使用

preg_replace("/0/","A",$str); 这样就是将0变成A意思了 echo preg_replace("/[0-9]/","",$str);//去掉所有数字 echo preg_replace...("/[a-z]/","",$str); //这样是去掉所有小写字母 echo preg_replace("/[A-Z]/","",$str); //这样是去掉所有大写字母 echo preg_replace...可以看到,匹配字符串必须加 / /(看例子第一个参数) $str="acsdcsscsdcd"; echo preg_replace("//","",$str); //这个是表示去除以结尾那部份,输出结果是:acsdcssdcd 注意: 上面的 .* 是表示任何字符,也就是说不管包住是什么都去掉其中....也是字符串,那么所有模式都使用这个字符串来匹配; 图片 replace少于 2.pattern是数组,replace也是数组,则中对应 元素进行替换 3.如果数组pattern大于replace,

3K30

php使用正则表达式实现替换方法

php正则表达式实现替换方法:首先创建一个PHP示例文件;然后定义一个字符串;最后通过正则表达式“preg_replace("/[0-9]/","",$str);”去掉字符串中所有数字即可。...]/","",$str); //这样是去掉所有小写字母 echo preg_replace("/[A-Z]/","",$str); //这样是去掉所有大写字母 echo preg_replace("/[...> 经过以上例子,相信大家知道,[ ] 和里面的,有什么作用了。可以看到,匹配字符串必须加 / /(看例子第一个参数) /","",$str); //这个是表示去除以结尾那部份,输出结果是:acsdcssdcd 注意:上面的 .* 是表示任何字符,也就是说不管包住是什么都去掉其中....注意:这时我们又学到了一个知识点{数字} 表示指定前面的个数,*就表示是任意个(0--无限个) 表示重复次数除了 *, {指定次数} 表示,还有很多表达形式: <?

2.1K30
  • 2024全网最全面及最新网络安全技巧 1 之 bypass各种waf技巧以及命令执行 ———— 作者:LJS

    简单翻了翻PHP文档没找到其他会涉及到可控变量 在原wp中有一个很厉害操作,直接reset所有的变量。...除了file_put_contents,error_log函数效果类似。...其实,除了使用base64特性方法外,我们还可以利用php://filter字符串处理方法来去除“死亡exit”。我们观察一下,这个实际上是什么?...>被去除了。但回到上面的题目,我们最终目的是写入一个webshell,而写入webshell也是php代码,如果使用strip_tags同样会被去除。...但我们要执行文件仍然排在最后,但我发现这三个文件名中都不包含特殊字符,那么 这个方法似乎行不通了。

    8310

    XSS基础学习

    测试过程中发现单引号无法存入数据库,原因本小白也是半懂不懂;在sql执行写入时候单引号会被转义,对此可以尝试双单引号来实现最后会以单引号语句保存在表中。 ?...; path= 定义Web服务器上哪些路径下页面可以获取服务器发送Cookie文件;Value为/表示Web服务器中所有页面都可以获取Cookie文件;如果缺省,PathValue...常规防御XSS 字符过滤 输入过滤 永远不要相信用户输入;一般情况在客户端要设置字符验证过滤敏感字符、限制长度、要求格式……等。...$value = preg_replace($ra,'',$value); //删除非打字符,粗暴式过滤xss可疑字符串 $arr[$key] = htmlentities...> 客户端预防 用户在访问网站时候为了防止恶意脚本在自己客户端上呗执行,可以在浏览器上安装一个插件,利用插件功能来禁止页面的脚本执行。 ----

    83420

    Github-ThinkPHP 2.X 任意代码执行

    ThinkPHP 3.0 版本因为 Lite 模式下没有修复该漏洞,存在这个漏洞。...所以先来看看preg_replace这个函数,这个函数是个替换函数,而且支持正则,使用方式如下: preg_replace('正则规则','替换字符','目标字符') 这个函数3个参数,结合起来意思是...:如果目标字符存在符合正则规则字符,那么就替换为替换字符,如果此时正则规则中使用了/e这个修饰符,则存在代码执行漏洞。...下面是搜索到关于/e解释: e 配合函数preg_replace()使用, 可以把匹配来字符串当作正则表达式执行; /e 可执行模式,此为PHP专有参数,例如preg_replace函数。...所以有必要了解一下thinkphp关于这块功能使用。 thinkphp也是MVC框架,所有的请求都是根据路由来决定

    90380

    正则表达式详解

    3.1 字符 1、普通字符: 由所有那些未显式指定为元字符打印和非打字符组成。这包括所有的大写和小写字母字符所有数字,所有标点符号以及一些符号。...x(PCRE_EXTENDED)   如果设定了此修正符,模式中空白字符除了被转义或在字符类中以外完全被忽略,在未转义字符类之外 # 以及下一个换行符之间所有字符,包括两头,都被忽略。...\-] //匹配所有的数字,句号和减号 [ \f\r\t\n] //匹配所有的白字符 同样,这些只表示一个字符,这是一个非常重要。...下面是几个排除特定字符例子: [^a-z] //除了小写字母以外所有字符 [^\\\/\^] //除了(\)(/)(^)之外所有字符 [^\"\'] //除了双引号(")和单引号(')之外所有字符...(点,句号)在正规表达式中用来表示除了“新行”之外所有字符。所以模式"^.5$"与任何两个字符、以数字5结尾和以其他非“新行”字符开头字符串匹配。模式"."

    1.4K10

    SQL注入过滤绕过

    在实际项目开发中,程序员一般都会使用函数过滤一些字符,以防止SQL注入比如魔术引号magic_quotes_gpc()之前文章有提过,再比如preg_replace()函数过滤了一些字符。...不好意思,不存在!道高一尺魔高一丈,虽然过滤了某些字符,但是已然可以绕过,达到SQL注入目的。...,$id); //过滤 order return $id; } 由于先匹配到了or,所以把order中or去除了,并且把by去除了。...where username=0x61646d696e; 2370265340.png 3966044822.png 这里注意一下,中文无法进行使用16进制编码 4.2 ASCII编码绕过 admin各个字符...3498329545.png 我们Payload如下,其中columns和tables这个字段可以互换,我们可以在B后面继续加C、D等等 select * from users where id=1

    3.2K10

    PHP清除html格式

    做采集都知道,一般采集过来内容难免会带有html标签,如果有太多标签会影响之后数据分析或提取,所以需要过滤掉!PHP已经为我们提供了很多清除html格式方法了,下面就让老高介绍一下。...若是字串 HTML 及 PHP 标签原来就有错,例如少了大于符号,则会传回错误。...预定义字符是: & (和号) 成为 & ” (双引号) 成为 ” ‘ (单引号) 成为 ‘ (大于) 成为 > 例子 $new = htmlspecialchars("<a...# 但是通过htmlspecialchars就可以让< 变为 ' 与htmlspecialchars功能相反函数是htmlspecialchars_decode,他会把HTML实体转化为字符...后补函数 PHP去除html、css样式、js格式方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断研究,最终找到了一个理想去除html包括空格css样式、js PHP函数。

    2.3K30

    Web安全中XSS攻击详细教学(二)--已完结

    这种攻击多见于论坛,攻击者在发帖过程中,将恶意脚本连同正常信息一起注入到帖子内容之中。随着帖子被论坛服务器存储下来,恶意脚本永久地被存放在论坛服务器后端存储器中。...后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理; 后端在输出给前端数据统一进行转义处理; 前端在渲染页面 DOM 时候应该选择不相信任何后端数据,任何字段都需要做转义处理。...php ​ if( isset( $_POST[ 'btnSign' ] ) ) { //trim() 函数只能去除字符首尾字符,这里没有第二个参数,默认去除首尾空格 $message...注入失败 盲注尝试第一个框,而且输入框限制了文字输入长度 似乎有效果 尝试修改input框输入长度限制 payload如下 alert()<...trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // strip_tags() 函数用于从字符串中去除

    6300

    谈一谈php:filter妙用

    其原因是,PHP是基于标签脚本语言,这个语法与XML相符合,所以在解析XML时候会被误认为是XML,而其中内容(比如特殊字符)又有可能和标准XML冲突,所以导致了出错。...所以,在XXE中,我们可以将PHP等容易引发冲突文件流用php://filter协议流处理一遍,这样就能有效规避特殊字符造成混乱。...巧用编码与解码 使用编码不光可以帮助我们获取文件,可以帮我们去除一些“不必要麻烦”。 记得前段时间三个白帽有个比赛,其中有一部分代码大概类似于以下: <?php $content = '<?...利用<em>字符</em>串操作方法 有的同学说,base64<em>的</em>算法我不懂,上面的方法太复杂了。 其实,<em>除了</em>使用base64特性<em>的</em>方法外,我们还可以利用php://filter<em>字符</em>串处理方法来<em>去除</em>“死亡exit”。...>被<em>去除了</em>。但回到上面的题目,我们最终<em>的</em>目的是写入一个webshell,而写入<em>的</em>webshell也是php代码,如果使用strip_tags同样会被<em>去除</em>。

    91520

    浅谈php:filter妙用

    其原因是,PHP是基于标签脚本语言,<?php … ? 这个语法与XML相符合,所以在解析XML时候会被误认为是XML,而其中内容(比如特殊字符)又有可能和标准XML冲突,所以导致了出错。...所以,在XXE中,我们可以将PHP等容易引发冲突文件流用php://filter协议流处理一遍,这样就能有效规避特殊字符造成混乱。...巧用编码与解码 使用编码不光可以帮助我们获取文件,可以帮我们去除一些“不必要麻烦”。 记得前段时间三个白帽有个比赛,其中有一部分代码大概类似于以下: <?php $content = '<?...利用<em>字符</em>串操作方法 有的同学说,base64<em>的</em>算法我不懂,上面的方法太复杂了。 其实,<em>除了</em>使用base64特性<em>的</em>方法外,我们还可以利用php://filter<em>字符</em>串处理方法来<em>去除</em>“死亡exit”。...被<em>去除了</em>。但回到上面的题目,我们最终<em>的</em>目的是写入一个webshell,而写入<em>的</em>webshell也是php代码,如果使用strip_tags同样会被<em>去除</em>。

    1.4K42

    编程好习惯

    x原码文件默认使用utf-8,使变量名更为广阔 3、语法 去除了,改用!...= / 除 python2.x整型触发返回整数 python3.x整型触发返回浮点数,整除使用// 加入了nonlocal语句 去除了print语句,加入了print()函数 print("zutuanxue_com...", end=" ") print("zutuanxue_com") 去除了raw_input语句,加入了input()函数 新super(),可以不再给super()传递参数 class A(object...异常 新式8进制数字变量 4、字符串和字节串 python2.x 字符串以8bit字符串存储 python3.x 字符串以16bit Unicode字符串存储,现在字符串只有str一种类型 5、数据类型...python3.x去除了long类型,现在只有一种整数类型int,但是它行为就像2.x中long 新增了bytes类型,对应2.x版八位串 6、面向对象 引入抽象基类 7、异常 所有异常都从

    22320

    Sqlilabs通关笔记(五)

    第二十五关 基于错误GET单引号-你OR及AND归我所有 这个系列是绕过注入,题目已提示需要绕过字符,且能显示出输入payload 源码审计 function blacklist($id){ $...id=1" --tamper "xx.py" --technique E --threads 10 --dbs --batch 第二十五a关 基于GET盲注整型单引号-你OR及AND归我所有 源码审计...和SELECT归我所有-字符型单引号 源码审计 function blacklist($id){$id= preg_replace('/[\/\*]/',"", $id); //strip out /...和SELECT归我所有-字符型单引号和括号 源码审计 // connectivity $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; $result...id=1')%0aand%0a1=2%0aunion%0aall%0aselect%0a1,database(),3%0aor ('1 第二十八a关 基于GET盲注-你UNION和SELECT归我所有

    69410

    PHP字符串格式化特点和漏洞利用点

    格式化字符特性 除了上面的一般用法之外,格式化中一些怪异用法常常被人忽略,则这些恰好是漏洞来源。...monkey' 吞掉引号 对上面进行一个简单总结,除了一些不常见字符格式化用法之外,还存在一些吞掉引号用法。...此时其中刚好存在有 1 %1$'%s 这种形式格式化字符串,导致其中 %1$' 会被去除,剩下 1 %s' ,此时就类似于 SELECT * FROM table WHERE key='%s' AND...其他 虽然本篇文章主要讨论是PHP中字符串漏洞,但是对于其他语言如(Java/Python)在这里进行一个简单讨论。...总结 看似一些正常功能函数在某些特殊情况下恰好能够为埋下漏洞隐患,而字符串格式化刚好就是一个这样例子,从侧面说明了安全需要猥琐呀。

    71630

    正则表达式很难吗?其实也就那样!

    1.普通字符作原子 2.非打字符作原子 3.通用字符作为原子 4.原子表 1.普通字符作原子: 普通字符是编写正则表达式时最常见原子了,包括所有的大写和小写字母字符...object; span=(4, 7), match='and'> 说明:re.research返回是一个match对象 2.非打字符作为原子: 非打字符,是一些在字符串中格式控制符号,...例如下表所示列出了正则表达式中常用非打字符及其含义。 ?...下面我给大家列举出一些: \w:包含字母,数字,下划线 \W:除了字母,数字,下划线之外 \d:十进制数字 \D:除十进制数字 \s:空白字符 \S:除空白字符 ---- # 通用字符作为原子 s...“ . ” 除了换行符外任意一个字符 # 元字符 .

    95420

    php面试笔记(6)-php基础知识-正则表达式考点

    继而衍生出正则表达式作用: 分割 分隔符(定界符),主要是正斜线(/),表示一个正则表达式开始和结束 查找 通用原子 \d :十进制0-9 \D :除了十进制0-9 \w:数字、字母、下划线 \W...:除了数字、字母、下划线 \s:空白符(换行、空格、回车) \S:除了空白符(换行、空格、回车) 元字符模式修正符 U:懒惰模式 u:贪婪模式 i:忽略英文字母大小写 x:忽略空白 s:让元字符“.”匹配包括换行符在内所有字符...e:配合函数 preg_replace() 使用,可以把匹配来字符串当作正则表达式执行 匹配preg_match() //匹配一个 preg_match_all()// 匹配所有 替换 preg_replace.../u'; //贪婪模式 $res = preg_replace($pattern,'\1',$str); //将第一个匹配到数据放入数组 var_dump($res); //string(...请看下面这道题: 请写出一个正则表达式,取出页面中所有的img标签中src值 答案: <?php /** * Created by 冷月小白.

    36830

    posix,perl正则表达式区别

    PERL兼容正则可以使用任何不是字母、数字或反斜线(\)字符作为定界符,如果作为定界符字符必须被用在表达式本身中,则需要用反斜线转义。可以使用(),{},[]和 作为定界符。...x(PCRE_EXTENDED): 如果设定了此修正符,模式中空白字符除了被转义或在字符类中以外完全被忽略。...D(PCRE_DOLLAR_ENDONLY): 如果设定了此修正符,模式中行结束($)仅匹配目标字符结尾。没有此选项时,如果最后一个字符是换行符的话,会被匹配在里面。...元字符与“[]”相关: 有两组不同字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号“[]”内被识别的。...PERL兼容正则匹配除了换行符外任意一个字符 .

    1.4K20

    常用函数之字符串时间等

    strip_tags — 从字符串中去除 HTML 和 PHP 标记 htmlspecialchars — 将特殊字符转换为 HTML 实体 nl2br — 在字符所有新行之前插入 HTML...换行标记 trim — 去除字符串首尾处空白字符 echo — 输出一个或多个字符串 print — 输出字符串 print_r — 打印关于变量易于理解信息...var_dump — 打印变量相关信息 var_export — 输出或返回一个变量字符串表示 explode — 使用一个字符串分割另一个字符串 implode — 将一个一维数组值转化为字符串...md5 — 计算字符 MD5 散列值 str_replace — 子字符串替换 preg_replace — 执行一个正则表达式搜索和替换 strpos — 查找字符串首次出现位置 0...) — 设定用于一个脚本中所有日期时间函数默认时区 date — Y-m-d H:i:s 格式化一个本地时间/日期 strtotime time — 返回当前 Unix 时间戳 strtotime

    62830

    Shell 脚本 10 个有用“面试问题和解答”

    你怎么检查一个文本文件中某一行长度? 解答:‘sed’命令可以用来查找文本文件中某一行或者检查其长度。...可以在Linux系统上查看到所有非打字符吗?你是怎么做到? 解答:可以。可以在Linux中查看所有非打字符。要实现上面所讲方案,我们需要‘vi’编辑器帮助。...怎样在‘vi’编辑器中显示非打字符? 打开vi编辑器。 先按[esc]键,然后按‘:’进入到vi编辑器命令模式。 最后,从‘vi’编辑器命令界面输入set list命令并执行。...注: 这种方式可以查看文本文件中所有非打字符,包括ctrl+m(^M)。 5. 假如你是一个员工组团队领导,为xyz公司工作。...公司要求你创建一个‘dir_xyz’目录,让该组成员都能在该目录下创建或访问文件,但是除了文件创建者之外其他人不能删除文件,你会怎么做? 解答:这真是个有趣工作方案。

    1.2K10
    领券