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