我想从查询字符串中 to_date 函数的开头和结尾删除单引号(')。
$query = "'to_date('20-Jan-1970 4:00 AM','DD-MON-YYYY HH:MI AM')'";
以下模式查找字符串但不替换它:
$query = preg_replace("/(['])(to_date[(].*[)])(['])/i", "${2}", $query);
$ query 的值必须更改为:
to_date('20-Jan-1970 4:00 AM','DD-MON-YYYY HH:MI AM')
当前输出:
Empty String ""
答案 0 :(得分:1)
嗯,确实如此,但你在使用双引号字符串替换参数时犯了一个常见的错误。您必须记住,双引号字符串会导致字符串插值,并且在那里${2}
,PHP会在将参数值发送到$2
之前尝试查找名为preg_replace
的变量。 Turning up error_reporting would reveal this upon inspecting your error logs
只需将preg_replace("/(['])(to_date[(].*[)])(['])/i", "${2}", $query);
替换为preg_replace("/(['])(to_date[(].*[)])(['])/i", '$2', $query);
,一切顺利,或者您可以选择使用更优惠的\\2
进行替换,这就是我的目标。
另请注意,您在技术上甚至不需要正则表达式。您可以使用substr($query, 1, -1);
。
答案 1 :(得分:-2)
$query=substr(substr($query,1),0,-1);