PHP的preg_replace函数的问题
$string="april15,2003";$pattern="/(/w+)(/d+),(/d+)/i";$replacement="/${1}1,/$3";print...
$string = "april 15, 2003";
$pattern = "/(/w+) (/d+), (/d+)/i";
$replacement = "/${1}1,/$3";
print preg_replace($pattern, $replacement, $string);
/* output
======
april1,2003
*/
?>
$replacement = "/${1}1,/$3";
"/${1}1,/$3"这个是什么意思?
$patterns = array ("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/",
"/^/s*{(/w+)}/s*=/");
$replace = array ("//3///4///1//2", "$//1 =");
print preg_replace ($patterns, $replace, "{startdate} = 1999-5-27");
?>
$replace = array ("//3///4///1//2", "$//1 =");这个也是什么意思? 展开
$pattern = "/(/w+) (/d+), (/d+)/i";
$replacement = "/${1}1,/$3";
print preg_replace($pattern, $replacement, $string);
/* output
======
april1,2003
*/
?>
$replacement = "/${1}1,/$3";
"/${1}1,/$3"这个是什么意思?
$patterns = array ("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/",
"/^/s*{(/w+)}/s*=/");
$replace = array ("//3///4///1//2", "$//1 =");
print preg_replace ($patterns, $replace, "{startdate} = 1999-5-27");
?>
$replace = array ("//3///4///1//2", "$//1 =");这个也是什么意思? 展开
2个回答
2014-08-10
展开全部
preg_replace是正则查找替换函数
$1表示对应正则中第一个括号内的内容, 依此论推
比如:
(\d+)([a-z]+)这个正则, 表示数字开头,接着是字母
如果有这么一个字符串的话: 123abc
那么, $1 就是123, $2 就是abc , $3没有, 因为正则中只有2个括号
$1表示对应正则中第一个括号内的内容, 依此论推
比如:
(\d+)([a-z]+)这个正则, 表示数字开头,接着是字母
如果有这么一个字符串的话: 123abc
那么, $1 就是123, $2 就是abc , $3没有, 因为正则中只有2个括号
追问
\${1}1这叫反向捕获吗?
print preg_replace ($patterns, $replace, "{startdate} = 1999-5-27");这一行报个Unknown modifier 'd'的warn 这是哪里错了?
追答
反斜杠在计算机中, 是转义符, 在前面加了这个,就原样输出
比如:
$1会对于正则中第一个括号的内容, 而\$1就不会去对应, 只会原样输出$1
至于你说的错误, 那是因为你的 正则表达式语法错误
在正则中 /是正则分隔符, 一个正则中,只允许出现2次, 分别是开头和结束, 比如:/\d+/
很显然, 你的正则中, 是重复出现多次的,那正则就是错误的!
如果你的正则匹配中,确实需要包括 / 这个符号, 那也应该使用转义符 \ /
这样, 才会匹配/这个符号,
但看你的正则, /d{1,2} 这个, 你是匹配的什么啊?
如果是1到2位数字, 那应该是\d{1,2} 吧?
建议你先去学习巩固一下正则表达式先!
正则表达式,并不是一定就说是属于php或者其他编程语言的, 他本身就是一个独立的, 用于匹配计算机中的特定字符串!
php只不过是可以使用正则而已!
就好像, 你可以使用银行存取款, 但并不是说,银行就是你的!道理一样的!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询