​我就想知道为什么是$0,我用$1,都不行

来源:3-7 正则表达式的搜索和替换

慕后端0299879

2017-07-09 21:10

$str = preg_replace($p,'<em>$0</em>',$str);

写回答 关注

2回答

  • 月言0_0
    2017-07-12 21:06:45
    $p = '/\w+\.\w+/i';

    如果你的正则式是这样的话是没有$1的,

    但如果你正则式改为这样

    $p = '/(\w+)\.(\w+)/i';

    那你使用$1是可以通过的,显示结果为: 主要有以下几个文件:index, style, common

    会将文件名输出,而如果你使用$2显示结果则为:主要有以下几个文件:php, css, js

    其实正如楼上所说,$0代表完整的模式匹配文本,即$p所匹配的的完整字符串,即index.php, style.css, common.js这些,而你加了如上的括号后,你可以认为是将其匹配结果分组了,$1代表第一个括号匹配的字串,即index, style, common;$2代表第二个括号匹配的字串,即php, css, js。主要区别是加没加括号对其进行分组。

    希望对你有所帮助。

  • qq_一颗心_2
    2017-07-10 10:55:56

    $0代表完整的模式匹配文本(想index.css的话它全部都变成的斜体),$1代表第一个匹配的字串(想index.css的话,它只是配匹到index让他变成斜体)。这个练习的话主要是把字母全部变成斜体所以用$0

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181835 学习 · 2577 问题

查看课程

相似问题