作者saininniang (sob)
看板PHP
标题Re: [请益] 看不懂preg_replace函数的使用范例
时间Fri Dec 15 22:51:54 2006
※ 引述《foxzgerald (O⊥M)》之铭言:
: ※ 引述《saininniang (sob)》之铭言:
: : 下例传回值为 $startDate = 6/19/1969
: : <?php
: : $patterns = array("/(19|20\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");
: : $replace = array("\\3/\\4/\\1", "$\\1 =");
: : print preg_replace($patterns, $replace, "{startDate} = 1969-6-19");
: : ?>
: : 这是我在google搜preg_replace函数的使用方法
: : 但我怎麽看$patterns和$replace也没办法推测出像答案一样的结果
: : 我的问题应该是卡在许多符号看不懂其代表的意思
: 上头的范例有些问题,我将改过的地方以黄色显示:
: $patterns = array("/((19|20)\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");
: $replace = array("\\3/\\4/\\1", "$\\1=");
: print preg_replace($patterns, $replace, "{startDate} = 1969-6-19");
: x x x
: / 和 / 所夹的部分代表要比对的 pattern
: ^ 代表从字串开头
: \s 代表 [\r\n\t\f\v] 换行、跳行、空白字串.. (感谢 alpe 补正)
: * 代表 0 or 1 or any
: \w 代表 [a-zA-Z0-9_]
: + 代表 1 or any
: \d 代表 0-9 的数字
我又遇到一个问题了
我已经知道下面的程式主要是在过滤掉一些不必要的字
$str=(1*3)+2;
$p=preg_replace("`([^+\-*/\(\)\d\.]*)`" ,"" ,"$str");
对照你上面所打的一些正规化符号
上组程式的过滤方式还不是很清楚@ @
能再帮我解释一下吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.142.122
※ 编辑: saininniang 来自: 220.133.142.122 (12/15 22:53)
1F:推 foxzgerald:字串好像怪怪的 = =a 12/15 22:55
2F:→ saininniang:这是我在写工程计算机所用的过滤方式 12/15 22:55
3F:→ saininniang:$str=算式 12/15 22:56
4F:推 foxzgerald:该 pattern把不是 数字 或 + - * / ( ) 的符号过滤掉了 12/15 22:59
5F:推 alpe:就如fox说的一样 +*\() 都为特殊字符 要用\跳脱 12/15 23:03