<em>$0</em>為什么中間不能換成$1或者是別的數(shù)字而只能是0才能正確輸出呢? 而且為什么把<em>$0</em>這句去掉之后就不能正確運行了呢?
<?php
$str = '主要有以下幾個文件:index.php, style.css, common.js';
//將目標(biāo)字符串$str中的文件名替換后增加em標(biāo)簽
$p = '/\w+\.\w+/i';
$str = preg_replace($p, '<em>$0</em>',$str);
echo $str;
2019-05-15
$0是指匹配到的所有結(jié)果,$1是指匹配到的所有結(jié)果的第一個子組。這里的第一個子組就是整個結(jié)果,所以換成$1也是可以的。
把<em>$0</em>去掉不能正確運行,是因為這個課程的要求本來就是給這些文字加em標(biāo)簽(就是把文字變成斜體的html標(biāo)簽)。如果去掉了就變成把那些文字替換成空值,那就只能看見2個逗號了。
2019-05-03
$p
?=?
'/\w+\.\w+/i'
;
如果你的正則式是這樣的話是沒有$1的,
但如果你正則式改為這樣
$p
?=?
'/(\w+)\.(\w+)/i'
;
那你使用$1是可以通過的,顯示結(jié)果為:?主要有以下幾個文件:index, style, common
會將文件名輸出,而如果你使用$2顯示結(jié)果則為:主要有以下幾個文件:php, css, js
其實正如樓上所說,$0代表完整的模式匹配文本,即$p所匹配的的完整字符串,即index.php, style.css, common.js這些,而你加了如上的括號后,你可以認(rèn)為是將其匹配結(jié)果分組了,$1代表第一個括號匹配的字串,即index, style, common;$2代表第二個括號匹配的字串,即php, css, js。主要區(qū)別是加沒加括號對其進行分組。
希望對你有所幫助。