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

PHP preg_replace单词,但如果单词前面有某些字符则不会

这个问答内容是关于 PHP 的 preg_replace 函数,以及如何处理特殊字符的问题。

在 PHP 中,preg_replace 函数是一个强大的正则表达式替换函数,可以用来替换字符串中匹配的子串。如果需要在正则表达式中匹配特殊字符,可以使用反斜杠(\)进行转义,例如 \d 表示匹配数字,\s 表示匹配空格等。

然而,如果匹配的子串前面有某些字符,例如 \,则不会匹配该字符后面的子串。因此,如果需要在正则表达式中匹配特殊字符,需要使用其他方法。

在处理这个问题时,可以使用 PHP 的 preg_quote 函数,该函数可以将字符串中的特殊字符转换为相应的正则表达式字符,以便在 preg_replace 函数中使用。例如:

代码语言:txt
复制
$pattern = preg_quote($word);
$result = preg_replace("/$pattern/i", "<b>$word</b>", $string);

这样就可以成功将字符串中的特殊字符转换为相应的正则表达式字符,并匹配该字符后面的子串了。

希望这个答案能够帮助你解决问题。

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

相关·内容

PHP中正则表达式学习及应用

正则表达式元字符 * 匹配一个内容的0次1次或多次 . 匹配内容的0次1次或多次,但不包含回车换行 + 匹配一个内容的1次或多次 ?...匹配一个内容的0次或1次 | 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配) ^ 匹配字符串首部内容 $ 匹配字符串尾部内容 \b 匹配单词边界,边界可以是空格或者特殊符合...\B 匹配除带单词边界意外内容 {m} 匹配一个内容的重复次数为M次 {m,} 匹配一个内容的重复次数大于等于M次 {m,n} 匹配一个内容的重复次数M次到N次 ( ) 合并整体匹配,...正则替换函数 preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )通过正则表达式来替换相关内容,...类似之前学过的str_replace字符串替换,功能要强于它。

1K80

15个实用的PHP正则表达式

对于开发人员来说,正则表达式是一个非常有用的功能,它提供了 查找,匹配,替换 句子,单词,或者其他格式的字符串。这篇文章主要介绍了15个超实用的php正则表达式,需要的朋友可以参考下。..."; } 从一个字符串中 突出某个单词 这是一个非常有用的在一个字符串中匹配出某个单词 并且突出它,非常有效的搜索结果 $text = "Sample sentence from KomunitasWeb...$text = preg_replace("/s(w+s)1/i", "$1", $text); 删除重复的标点 功能同上,只是面对标点,白白重复的逗号 $text = preg_replace("/...#user agent)[^"]*)"$' 使用智能引号代替双引号 如果你是一个印刷爱好者,你将喜欢这个允许用智能引号代替双引号的正则表达式,这个正则被WORDPRESS在其内容上使用 preg_replace...php $str = ' jobbole其他字符 <a href="http://www.sohu.com

70510
  • 正则表达式详解

    如果要查找文件名中有*的文件,则需要对*进行转义,即在其加一个\。ls \*.txt。正则表达式有以下特殊字符。...5、定界符:边界 用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词或后边界,\B表示非单词边界。不能对定位符使用限定符。...e   如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。   ...没有此选项时,如果  最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符忽略此选项。Perl 中没有与其等价的修正符。...e: 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。

    1.4K10

    PHP正则表达式_python正则匹配字母

    一、正则表达式语法(Perl风格) 1、模式规则   /php/ 字符串前后加上两条斜杠即可 2、匹配函数    preg_match(’/php/’,php)   参数1 模式   参数2 字符串...a-zA-Z0-9和下划线的字符串 \d 匹配任何包含数字字符 \D 匹配任何非数字字符 \s 匹配任何空白字符 \S 匹配任何非空白字符 \b 匹配是否到达了单词边界 \B 匹配没有到达了单词边界 \...4、preg_quote()   将特殊字符转义   特殊字符包含 $ ^ * () + = {} [] | \ :   定界正则,在每一个对于正则表达式语法而言有特殊含义的字符插入一个反斜杠...5、preg_replace()   替换模式的所有出现,然后替换成想要的字符串返回出来 6、preg_split()   以不区分大小写将字符串划分不同的元素 //风格函数 //preg_grep...= {} [] | \\ : '); //结果为 \$ \^ \* \(\) \+ \= \{\} \[\] \| \\ \: \ //preg_replace() echo preg_replace

    2.7K20

    posix,perl正则表达式区别

    e: 如果设定了此修正符,preg_replace()在替换字符串中对逆向引用作正常的替换,将其作为 PHP代码求值,并用其结果来替换所搜索的字符串。...如果设定了m 修正符忽略此选项。 S: 当一个模式将被使用若干次时,为加速匹配,值得先对其进行分析。如果设定了此修正符则会进行额外的分析。...POSIX兼容正则匹配任意一个字符 POSIX兼容正则和PERL兼容正则“[]之内”“一致”的元字符: \ 有数种用途的通用转义符 ^ 取反字符仅当其为第一个字符时有效 - 指定字符ASCII范围,...:功能不明 [=c=]:功能不明 [:<:]:匹配单词的开始 [:>:]:匹配单词的结尾 7、PERL兼容正则(这里可以看出PERL正则的强大): \a alarm,即 BEL字符(’0) \cx "control-x...任一非空白字符 \w 任一数字、字母或下划线的字符 \W 任一非数字、字母或下划线的字符 \b 字分界线 \B 非字分界线 \A 目标的开头(独立于多行模式) \Z 目标的结尾或位于结尾的换行符(独立于多行模式

    1.4K20

    PHP正则表达式笔记与实例详解

    -- 转义正则表达式字符 echo preg_quote("(abc){10}","'");//在每个增表达式语法的字符增加一个反斜杠 $s = "a{4}"; preg_match("/".preg_quote...如果 n 之前至少 n 个获取的子表达式, n 为后向引用。否则,如果 n 为八进制数字 (0-7), n 为一个 八进制转义值。 nm 标识一个八进制转义值或一个后向引用。...如果 nm 之前至少有is preceded by at least nm 个获取得子表达式, nm 为后向引用。如果 nm 之前至 少有 n 个获取, n 为一个后跟文字 m 的后向引用。...如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7), nm 将匹配八进制转义值 nm。...nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),匹配八进制转义值 nml。 un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符

    1.1K00

    PHP正则表达式笔记与实例详解

    -- 转义正则表达式字符 echo preg_quote("(abc){10}","'");//在每个增表达式语法的字符增加一个反斜杠 $s = "a{4}"; preg_match("/".preg_quote...\b 匹配一个单词边界,也就是指单词和空格间的位置。 \B 匹配非单词边界。 \cx 匹配由x指明的控制字符。 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。...如果 \n 之前至少 n 个获取的子表达式, n 为后向引用。否则,如果 n 为八进制数字 (0-7), n 为一个 八进制转义值。 \nm 标识一个八进制转义值或一个后向引用。...如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式, nm 为后向引用。如果 \nm 之前至 少有 n 个获取, n 为一个后跟文字 m 的后向引用。...如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7), \nm 将匹配八进制转义值 nm。

    2.8K40

    PHP中正则的使用

    正则表达式,作为一种快速、便捷的处理字符串的工具,在各种编程语言中都有着广泛的用途,通过在PHP中的一些使用,下面记录一下关于PHP中正则使用的一些技巧。...常用的元字符(Meta-character): 元字符     说明 \A       匹配字符串串首的原子 \Z       匹配字符串串尾的原子 \b       匹配单词的边界     /\bis.../   匹配头为is的字符串   /is\b/   匹配尾为is的字符串   /\bis\b/ 定界 \B       匹配除单词边界之外的任意字符   /\Bis/   匹配单词“This”中的“is...上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[\W]”的结果“/”已经被存储。下个位置“\1”引用时,其匹配模式也是字符“/”。 当不需要存储匹配结果时使用非存储模式单元“(?..." target="qwerqwerq">';         $str = preg_replace

    3.7K30

    PHP正则表达式

    • \w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 • \W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。 • \xn匹配 n,其中 n 为十六进制转义值。...如果 \nm 之前至少有 nm 个获得子表达式, nm 为向后引用。如果 \nm 之前至少有 n 个获取, n 为一个后跟文字 m 的向后引用。...如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7), • \nm 将匹配八进制转义值 nm。...• \nml如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),匹配八进制转义值 nml。 • \un十六进制数字表示的 Unicode 字符。...例如,"o{1,3}" 将匹配 "fooooood" 中的三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 • [] 字符集合(字符域)。匹配所包含的任意一个字符

    4.6K10

    正则表达式

    一、常用函数 preg_match preg_match_all preg_replace preg_replace_callback 二、 PCRE模式 1.分隔符 分隔符可以使任意非字母数字...*+{} [\^-] 3.转义字符 \n 换行 \r 回车 \t 水平制表符 \d 任意十进制数字 \D 任意非十进制数字 \s 任意空白字符 \S 任意非空白字符 \w 任意单词字符...\W 任意非单词字符 锚 ^开始 $结束 4.模式修饰符 i 不区分大小写 S 当一个模式需要多次使用的时候,为了得到匹配速度的提升,值得花费一些时间 对其进行一些额外的分析。...如果设置了这个修饰符,这个额外的分析就会执行。 U 非贪婪模式 u 模式和目标字符串都被认为是 utf-8 的 <?...php $str="asdasd_"; if(preg_match("/[^\w]+/",$str,$num)){ echo "存在"; }else{ echo "不存在";

    34410

    正则表达式教程

    如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windows、HP、BeOS等)、主流的开发语言(PHP、C#、Java、C++、VB、Javascript...匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 转义 如果要匹配 C:\\WINDOWS,我们要如何描述\反斜杠呢?...如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的5位)。...原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。 括号的作用 界定作用范围 还记得gr[ae]y吗?...断言只是条件,帮你找到真正需要的字符串,本身并不会匹配!所以不用担心他会影响分组编号。 总结 正则表达式水很深,的确很强大!

    2.5K20

    正则表达式教程

    如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windows、HP、BeOS等)、主流的开发语言(PHP、C#、Java、C++、VB、Javascript...匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 转义 如果要匹配 C:\\WINDOWS,我们要如何描述\反斜杠呢?...如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的5位)。...原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。 括号的作用 界定作用范围 还记得gr[ae]y吗?...断言只是条件,帮你找到真正需要的字符串,本身并不会匹配!所以不用担心他会影响分组编号。 总结 正则表达式水很深,的确很强大!

    1.9K30

    PERL学习笔记---正则表达式

    如果找到,返回true,在本例中,它出现了不止一次,结果没什么不同。总之, 如果找到了,匹配上;如果没找到,则没匹配上。...星号(*)表示匹配一项0次或者多次。因此,/fred\t*barney/将匹配上fred 和barney 之间有任意个制表位(tab)的字符串。 如果希望包括不同的字符,怎么办呢?...任意行如果面有fred,后面有barney, 其间为任意字符字符串)都将匹配上。我们将.*叫做“任意字符串匹配模式”,因为任意的字符串均能被匹配上(不包括 换行符)。...当然,\w 不能匹配单词,而只能匹配单个字符。为了匹配整个单词,需要后接加号。模式/fred \w+ barney/将匹配fred,空 格,一个“单词(word)”,然后是空格和barney。...简写形式的补集 某些时候,你可能希望得到这三种简写形式的补集。

    68810

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

    所以先来看看preg_replace这个函数,这个函数是个替换函数,而且支持正则,使用方式如下: preg_replace('正则规则','替换字符','目标字符') 这个函数的3个参数,结合起来的意思是...:如果目标字符存在符合正则规则的字符,那么就替换为替换字符如果此时正则规则中使用了/e这个修饰符,存在代码执行漏洞。...下面是搜索到的关于/e的解释: e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式,此为PHP专有参数,例如preg_replace函数。...到了php7.0.1以上则不行了 2.漏洞复现 (1)打开靶场 image.png (2)利用 POC 来验证, phpinfo() 成功执行。...如果以挖漏洞的思路来看的话,应当整理思路如下: 1.确定php版本,如果版本在php4.4.9-php5.6.29之中 2.查找关键函数是否调用哪了preg_replace()函数 3.查看该函数所在的地方是否存在

    89880

    PHP--正则表达式和样式匹配--小记

    “o{0,}”等价于“o*”。 {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的三个o。...例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 注意:只有连字符字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果字符组的开头,只能表示连字符本身....如果\n之前至少n个获取的子表达式,n为向后引用。否则,如果n为八进制数字(0-7),n为一个八进制转义值。 \nm 标识一个八进制转义值或一个向后引用。...如果\nm之前至少有nm个获得子表达式,nm为向后引用。如果\nm之前至少有n个获取,n为一个后跟文字m的向后引用。...如果前面的条件都不满足,若n和m均为八进制数字(0-7),\nm将匹配八进制转义值nm。 \nml 如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),匹配八进制转义值nml。

    1.9K10

    正则表达式的使用

    o{0,}’ 等价于 ‘o*’。 {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的三个 o。’...否则,如果 n 为八进制数字 (0-7), n 为一个八进制转义值。 \nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式, nm 为向后引用。...如果 \nm 之前至少有 n 个获取, n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7), \nm 将匹配八进制转义值 nm。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。 \b 匹配一个单词边界,即字与空格间的位置。 \B 非单词边界匹配。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。 \b 匹配一个单词边界,即字与空格间的位置。 \B 非单词边界匹配。

    91120

    数据工程师常用的 Shell 命令

    字符数 du -h -c -s:查看空间占用 上面有一个比较有趣的命令组,less和more,这两个都可以分页查看文件。...了解文件的大概信息后,可能需要提取一行中某个字段的内容,或者需要搜索某些行出来,或者需要对某些字符或者行进行一定的修改操作,或者需要在众多的目录和文件中找出某此天的日志(甚至找到后需要对这些天的日志进行统一处理...如: fgrep “1.2.3.4″ 只匹配ip地址: 1.2.3.4, 其中的.不会匹配任意字符。...假如日志文件是最近一年的请求日志,那么可能是按天或者按小时进行单独存放,此时如果只需要提取某些天(比如周末)的数据,很可能需要处理时间。...如果能把这些相关的命令融会贯通,并且能实际使用的话,也算是在数据极客之路上多走了一步。 从基础的文件查看到简单的统计,再到一些常用的探索性分析命令,其目的都只是为了更好的做数据分析与挖掘而已。

    1K60

    re:Python中正则表达式的处理与应用

    字符(锚定码) 像上面的的一个字符串,里面有多个子字符串,通过匹配肯定会返回多个结果。现在,我们有一个需求,不管字符串里面有多个匹配结果,我们只需要第一个怎么操作呢?...=/d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。 (?!pattern ) 后向否定断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,/w+(?!.../d) 与后不跟数字的单词匹配,而不与该数字匹配 。 (?<=pattern ) 向断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?...此构造不会回溯。 (?<!pattern ) 向否定断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?<!...如果修改数据,就需要用到sub()函数将一个模式的所有出现替换成另一个字符串。

    20220

    PHP代码审计笔记

    temp=4e11输出4 addslashes() 使用反斜线引用字符串 在单引号 双引号 反斜线 与NUl 前面加上反斜线 preg_replace() /e PHP5.5.0以下可用,5.5.0及以上版本已经被弃用了...如果subject是一个数组, preg_replace()返回一个数组,其他情况下返回一个字符串。 webshell代码 <?...php @preg_replace(``"/[pageerror]/e"``,$_POST[``'error'``],``"saft"``); 关于GPC和REQUESTS 字母出现顺序越靠后数据加载的顺序越靠前...';", $file); $file = preg_replace('|\$option=\'.*\';|', $c, $file); echo $file; 这里面有一个疑问,运行的结果如下 aaa\...select 1*/可以成功执行,在语句可以加上5位数字,代表版本号,表示只有在大于该版本的mysql中不作为注释 select /*!

    1.2K40
    领券