Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg replace在php中不替换_Php_Regex_Date_Preg Replace - Fatal编程技术网

preg replace在php中不替换

preg replace在php中不替换,php,regex,date,preg-replace,Php,Regex,Date,Preg Replace,我有这样的代码来替换php日期中的模式 $input = preg_replace('/\/\-\.\_\s/', '-', $date); 如果我以mm/dd/yyyy的形式传递日期,preg\u replace只会返回传递的日期 预期输出应为mm dd yyyy 可能有什么问题要替换为-的字符集属于[]字符类。在那里,不需要转义 $out = preg_replace('#[/._\s]#', '-', $date); 当您将/作为预期字符之一处理时,建议使用不同的字符,如#作为分隔符

我有这样的代码来替换php日期中的模式

$input = preg_replace('/\/\-\.\_\s/', '-', $date);
如果我以
mm/dd/yyyy
的形式传递日期,preg\u replace只会返回传递的日期

预期输出应为
mm dd yyyy

可能有什么问题

要替换为
-
的字符集属于
[]
字符类。在那里,
不需要转义

$out = preg_replace('#[/._\s]#', '-', $date);
当您将
/
作为预期字符之一处理时,建议使用不同的字符,如
#
作为分隔符

$date = '01/02/2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

$date = '01.02.2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

// Or mixed...
$date = '01 02/2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

在您的尝试中,未使用字符类
[]
导致表达式期望字符
/-.\uS
按字面顺序连续。

要替换为
-
的字符集属于
[]
字符类。在那里,
不需要转义

$out = preg_replace('#[/._\s]#', '-', $date);
当您将
/
作为预期字符之一处理时,建议使用不同的字符,如
#
作为分隔符

$date = '01/02/2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

$date = '01.02.2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

// Or mixed...
$date = '01 02/2013';
echo preg_replace('#[/._\s]#', '-', $date);
// 01-02-2013

在您的尝试中,未使用字符类
[]
导致您的表达式期望字符连续出现。

您可能一心想使用正则表达式,在这种情况下,您可以忽略我的答案。但是,如果您想改进作为程序员所拥有的工具集,那么花一些时间学习PHP的日期/时间函数可能会对您有所帮助。以下是我如何处理您的问题:

将输入日期转换为UNIX时间戳。这只是日期/时间的整数表示形式。 使用PHP的
strotime
函数来执行此操作()。它将“关于任何英文文本datetime描述”转换为Unix时间戳

将时间戳格式化为字符串,并按照您希望的方式进行格式化。 使用PHP的
date
函数执行此操作()。这是一个非常通用和有用的功能

$properly_formatted_date = date('m-d-Y', $timestamp);
输出新格式化的日期。
当然,此解决方案不使用正则表达式。但是,我认为你的问题不需要正则表达式。事实上,如果输入发生变化(可能原始日期的格式不再是
mm/dd/yyyyy
,而是
yyyy-mm-dd
),则需要更改正则表达式。但是strotime应该能够处理它,并且您的代码不需要更改。

您可能一心想使用正则表达式,在这种情况下,您可以忽略我的答案。但是,如果您想改进作为程序员所拥有的工具集,那么花一些时间学习PHP的日期/时间函数可能会对您有所帮助。以下是我如何处理您的问题:

将输入日期转换为UNIX时间戳。这只是日期/时间的整数表示形式。 使用PHP的
strotime
函数来执行此操作()。它将“关于任何英文文本datetime描述”转换为Unix时间戳

将时间戳格式化为字符串,并按照您希望的方式进行格式化。 使用PHP的
date
函数执行此操作()。这是一个非常通用和有用的功能

$properly_formatted_date = date('m-d-Y', $timestamp);
输出新格式化的日期。
当然,此解决方案不使用正则表达式。但是,我认为你的问题不需要正则表达式。事实上,如果输入发生变化(可能原始日期的格式不再是
mm/dd/yyyyy
,而是
yyyy-mm-dd
),则需要更改正则表达式。但是strotime应该能够处理它,并且您的代码不需要更改。

您想做什么?您是否试图将
/
更改为
-
?您希望从什么输入中得到什么输出?对于
可能出现的错误,我会说“使用preg_replace来操纵日期”。有,你想做什么?您是否试图将
/
更改为
-
?您希望从什么输入中得到什么输出?对于
可能出现的错误,我会说“使用preg_replace来操纵日期”。有很多。