重发:
今天碰到一个很别扭的问题,搞得很糊涂。用ereg函数匹配的问题我的PHP版本是 5.2.5。
$s='xyz]\hi[jk'; //待搜索字符串
$d='[]]'; //模式字符串
ereg(($d, $s, $c);上面的结果返回true,匹配字符是] 。(我也不知道是怎么匹配的)如果改成$d='[]\]'; 返回true,匹配字符还是 ] 。但如果写成$d='[\]]'; 返回false。
看网上的资料应该用转意字符\,但不管我写成$d='[\\]]';,还是写成$d='[\\\]]';,其结果都返回false。我用[:punct:]搜索可以匹配到字符],但如果按照书上写的,把[:punct:] 的扩展表达式[-!"#$%&'( )*+,./:;<=>?@[\\\]^_'{|}~]代到$d里,结果也是错?! 这到底怎么回事,书上写错了?书上还说[^\]]匹配任一不是右括号的字符,但 ereg("[^\]]","abcd") 返回false晕死,到底是书上错,还是我理解错,还是我php 有bug。请大家指教一下。谢谢!
今天碰到一个很别扭的问题,搞得很糊涂。用ereg函数匹配的问题我的PHP版本是 5.2.5。
$s='xyz]\hi[jk'; //待搜索字符串
$d='[]]'; //模式字符串
ereg(($d, $s, $c);上面的结果返回true,匹配字符是] 。(我也不知道是怎么匹配的)如果改成$d='[]\]'; 返回true,匹配字符还是 ] 。但如果写成$d='[\]]'; 返回false。
看网上的资料应该用转意字符\,但不管我写成$d='[\\]]';,还是写成$d='[\\\]]';,其结果都返回false。我用[:punct:]搜索可以匹配到字符],但如果按照书上写的,把[:punct:] 的扩展表达式[-!"#$%&'( )*+,./:;<=>?@[\\\]^_'{|}~]代到$d里,结果也是错?! 这到底怎么回事,书上写错了?书上还说[^\]]匹配任一不是右括号的字符,但 ereg("[^\]]","abcd") 返回false晕死,到底是书上错,还是我理解错,还是我php 有bug。请大家指教一下。谢谢!
解决方案 »
- php 提取access时间显示和 session_start();问题
- 这几天国际喜悦村不能访问了,你们是这样子的吗?
- 怎样单独安装mbstring模块?
- 关于数组取值0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/
- 大家好 小弟麻烦你们了 关于php和mysql 100分
- 请问大家php连接access是怎么连的?
- 有奖竟答,高分相赠,用PHP打开全屏窗口问题,我记得用header什么的可以实现,望高手指教!!!
- 诸位大虾为什么会这样呢?
- 帮小弟看看这个程序
- 怎么在php中实现对话框?
- 文章每段前留两个空格是如何实现的?
- Allowed memory size of 134217728 bytes exhausted
string ereg_replace ( string $pattern, string $replacement, string $string )应该用ereg_replace吧.
\] \\\
没看明白,你最后一行 \] \\\ 是想说明怎么表示 ] 吗,我没看懂,能否详细些。
作不作替换没关系,我不关心用replace,还是不用,就想知道为什么用\转义字符类[]中的字符],不起作用。和书上写得怎么不一样呢?
参考一下:http://www.regular-expressions.info/posixbrackets.html