我正在尝试将一个Carat添加到php中的日期
preg_replace('(/[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{4}\/[0-9]{2}\/[0-9]{2}/)', "/\^${1}/", $FileStream);
2000-01-01
成为^2000-01-01
;
不工作
答案 0 :(得分:1)
试试这个:
preg_replace('/([0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{4}\/[0-9]{2}\/[0-9]{2})/',
"^$1", $FileStream);
您当前的正则表达式如下:
'(/regex/)'
因此(
和)
被视为正则表达式分隔符,/
和/
被视为文字。
但你想要的是:
'/(regex)/'
以便/
充当分隔符,(..)
捕获字符串匹配的一部分,以便它可以替换为$1
而不是${1}
。使用过。
答案 1 :(得分:1)
preg_replace(
'/([0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{4}\/[0-9]{2}\/[0-9]{2})/' ,
"^$1" ,
$FileStream
);
作为参考,您的解决方案包含以下错误:
$
保留在括号内 - $varName
将起作用,因此{$varName}
,${varName}
,/(.*)/
1}}会失败。(/.*/)
会起作用,但/
会尝试将左括号视为分隔符,因此会失败。 (另外,它会尝试在模式的开头和结尾找到{{1}}个字符。)