本文實例講述了PHP實現正則表達式分組捕獲操作。分享給大家供大家參考,具體如下:
經過測試,發現php正則表達式獲取分組捕獲是從$0開始,而平時工作中JavaScript中的正則是$1..$9
在提取項目代碼中的漢字時,因為當時操作速度很快(趕時間),很擔心當時.properties的文件{\d}的數字順序搞錯了:
1、可能從{1}開始,而不是從{0}開始
2、可能跳著寫了,比如第一個是{0}第二個需要替換的地方卻寫著{2}
因為使用人工手動操作的,所以這種情況是難以避免,只能說減少誤操作。寫完了,得再檢查一遍,這個遇到困難了,二三千行的代碼,用眼睛一行一行查,那的比較累了,而且還不一定能檢查出來。一多就容易出錯,而且行與行之間靠的太近了,字又太小…
突然想起來,覺得php可以節省一點時間,讀取文件,然后將關鍵的地方標紅…
然后就開始了:php讀取文件,然后逐行的讀取,使用正則表達式匹配符合{\d}的行,然后將{\d}的地方使用紅色進行重點的標記,之后人工去查看每一行是能是符合規則。代碼不對,卻很受用,至少省了用眼睛去一個一個檢查的時間:
這樣一眼掃過去,就能很清楚的看出每一行順序是否都寫對了,寫錯了的行,前面有行號,找到相應行再改改.
<!Doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>檢測中文替換文字的正確性</title> </head> <?php $filename = "C:\test.properties"; $mode = "r"; $file_handle = fopen($filename, $mode); $lineNum = 0; $pattern = "/{\d}[^{}]+/"; if ($file_handle) { while (!feof($file_handle)) { ++$lineNum; $line = fgets($file_handle); if (preg_match($pattern, $line)) { $line = preg_replace("/{\d}/", "<font color='red'>$0</font>", $line); echo "行".$lineNum.":".$line."<br/><br/><br/>"; } } } else { echo "文件讀取失敗"; } fclose($file_handle); ?> </html>
希望本文所述對大家PHP程序設計有所幫助。