2017-10-16 106 views
1

用了preg_replace使用我知道,在PHP的preg_replace功能字符的含義 - 執行正則表達式搜索和替換和subject中搜索模式匹配,並與更換替代它們,例如:什麼是在PHP

<?php 
$string = 'The quick brown fox jumps over the lazy dog.'; 
$patterns = array(); 
$patterns[0] = '/quick/'; 
$patterns[1] = '/brown/'; 
$patterns[2] = '/fox/'; 
$replacements = array(); 
$replacements[2] = 'bear'; 
$replacements[1] = 'black'; 
$replacements[0] = 'slow'; 
echo preg_replace($patterns, $replacements, $string); 
?> 

結果將會是:

熊黑慢慢跳過懶狗。

我還有一個例子,我不明白在搜索和模式的特點,可有人告訴我這裏發生什麼事?:

<?php 
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', 
        '/^\s*{(\w+)}\s*=/'); 
$replace = array ('\3/\4/\1\2', '$\1 ='); 
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); 
?> 

結果將是:

$的startDate = 1999年5月27日

謝謝

+2

[我建議你開始學習正則表達式](https://www.regular-expressions.info/) –

+0

@sam它的字符串經歷搜索和替換操作 – shashi

+0

我只是討厭有多糟**一些**這裏的用戶是...他們只是做這個普通的問題總是這樣的表決......這裏的新程序員需要永遠支持... –

回答

2

我認爲你需要採取速成課PHP style PCRE regular expressions。但無論如何,這裏是一個簡短的總結:

  • ()將導致任何內部匹配作爲一個組。如果您需要在稍後的替換中使用此值,則此功能尤其方便,但也可以有其他用途。
  • (19|20)匹配由任一數19 OCH數20
  • (\d{2})一組由兩個{2}號碼\d ()的一組相匹配。 \d將匹配0-9範圍內的字符。
  • {m,n}將匹配之前的字符或組,其中m和n次之間的某處。 {m}僅匹配m次,{m,}將匹配至少m次
  • (\d{1,2})匹配由某處1和2之間的一個基團(即1 2,或如存在之間沒有任何東西)的數字
  • -負字符匹配...

對於其他表達:

  • 在表達式將匹配一個行的開頭的開始^$在表達式的末尾將匹配一行的結尾)

  • \s*將匹配空白字符(\s)的任何數字(包括0)。

  • \w+將在任何長度匹配任何字字符(AZ,AZ,0-9,_)的字符串,但至少1個字符長

至於取代,所述\3將匹配第三組()的模式中,\4將匹配第四組,\1將匹配第一組,並且\2將匹配第二組。

+0

我只是討厭有多糟糕**這裏有些用戶是** ......他們只是爲了這樣的普通問題而不斷地進行投票......無論如何,新程序員都需要支持......無論如何感謝你的親切描述。 –