【问题标题】:what is the meaning of the characters using with preg_replace in php在php中使用preg_replace的字符是什么意思
【发布时间】:2017-10-16 09:11:12
【问题描述】:

我知道 php 中的 preg_replace 函数 — 执行正则表达式搜索和替换,搜索主题以匹配模式并用替换替换它们,例如:

<?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 日

谢谢

【问题讨论】:

  • @sam 对其进行查找替换操作的字符串
  • 我只是讨厌这里的 一些 用户有多糟糕......他们总是对这样的普通问题投反对票......需要永远支持...
  • @MarkBaker 感谢 asnwer
  • 您可能还会发现regex101.com 很有用,不仅可以用于测试正则表达式,还可以解释它们的作用

标签: php


【解决方案1】:

我认为您需要参加PHP style PCRE regular expressions 的速成课程。但无论如何,这里有一个简短的总结:

  • () 将导致内部的任何内容作为一个组进行匹配。如果您稍后需要在替换中使用此值,这将特别方便,但也可以有其他用途。
  • (19|20) 匹配由数字 19 或数字 20 组成的组
  • (\d{2}) 匹配由两个 {2} 数字组成的组 \d ()。 \d 将匹配 0-9 范围内的字符。
  • {m,n} 将匹配前一个字符或组 m 到 n 次。 {m} 将只匹配 m 次,{m,} 将至少匹配 m 次
  • (\d{1,2}) 匹配由介于 1 和 2 之间(即 1 或 2,因为两者之间没有任何数字)数字组成的组
  • - 匹配减号...

对于其他表达式:

  • 表达式开头的^ 将匹配行首(表达式末尾的$ 将匹配行尾)

  • \s* 将匹配任意数量(包括 0)的空白字符 (\s)。

  • \w+ 将匹配任意长度但至少 1 个字符长度的任意单词字符(A-Z、a-z、0-9、_)的字符串

至于替换,\3 将匹配模式中的第三组 (),\4 将匹配第四组,\1 将匹配第一组,\2 将匹配第二组。

【讨论】:

  • 我只是讨厌这里的 一些 用户有多糟糕......他们总是对这样的普通问题投反对票......需要永远支持...,无论如何真的很感谢你的好意描述。
猜你喜欢
  • 2022-11-27
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2011-04-18
相关资源
最近更新 更多