首页
学习
活动
专区
工具
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

XSS基础学习

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

81820

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框架,所有的请求都是根据路由来决定

88280

正则表达式详解

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.1K10

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() 函数用于从字符串中去除

4700

谈一谈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>。

88620

浅谈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.3K42

编程好习惯

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、异常 所有异常都从

21320

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

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

69430

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

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

94420

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归我所有

67210

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 冷月小白.

35830

常用函数之字符串时间等

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

61930

posix,perl正则表达式区别

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

1.3K20

12-2 提示符添加颜色及光标移动

三、添加颜色 大多数终端都会响应某些非打字符序列,来控制光标位置、字符属性(如:颜色、粗体、文本闪烁)等内容。 1.字符颜色 (1)是什么?...在shell提示符中使用转义字符表中可看到,“\ [ ” 和 "\ ]"这两个序列用来封装非打字符串。...(3)注意 文本除了正常(0)和粗体(1)属性外,还可以设置为下划线(4)、闪烁(5)和斜体(7)。 但为了维持好品味,许多终端仿真器拒绝使用闪烁属性。...① 复杂提示符分解 以下是对上面这个字符每一部分进行分析。 字符序列 动作 \ [ 开始一个非打字符序列。其真正目的是为了让 bash 正确计算可见提示符长度。...\033[u 恢复之前存储光标位置。 \ ] 结束非打字符序列。 $ 提示符字符串。

1.4K20

正则表达式梳理和练习笔记

使用构造函数方式,当你知道正则表达式模式将会改变,或者你不知道模式,并且从其他来源获取它,如用户输入。 普通字符 普通字符包括没有显式指定为元字符所有可打印和不可打印字符。...这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。 这里所有符号要排除一些特殊符号 非打字符 非打字符可以是正则表达式组成部分。...下表列出了表示非打字符转义序列: # 在有些时候我们需要对编辑器中我们不可见一些类似于换行符之类符号做操作时,就需要用到非打字符字符 描述 \s 匹配任何空白字符,包括空格、制表符、换页符等等...如果设置了 RegExp 对象 Multiline 属性,则 $ 匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。...会包含除了最后一个> 以外全部字符 如果使用非贪婪 // 就只会匹配到 , 这里匹配到第一个>时,就会认为已经触发结束条件了。

48730
领券