2017-10-16 56 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

我只是讨厌有多糟糕**这里有些用户是** ......他们只是为了这样的普通问题而不断地进行投票......无论如何,新程序员都需要支持......无论如何感谢你的亲切描述。 –