Php 在列表中的时间字符串之间插入连字符
我需要一些关于格式化函数的帮助。我需要能够接受输入函数参数并将字符串格式化为其他格式。以下是我的选择:Php 在列表中的时间字符串之间插入连字符,php,regex,string,Php,Regex,String,我需要一些关于格式化函数的帮助。我需要能够接受输入函数参数并将字符串格式化为其他格式。以下是我的选择: 7am7pm 10am10pm OFF 因此,根据所选内容,我希望正则表达式满足以下输出标准: 7am-7pm 10am-10pm OFF 换句话说,我需要在时间和原始时间之间插入一个连字符,可以是[0-9]{2}或[0-9]{1},所以我猜测类似于[0-9]{1,2},但我不确定如何创建函数并在PHP中使用它。试试看 preg_replace("/(\d{1,2}(am|pm))(\d{
7am7pm
10am10pm
OFF
因此,根据所选内容,我希望正则表达式满足以下输出标准:
7am-7pm
10am-10pm
OFF
换句话说,我需要在时间和原始时间之间插入一个连字符,可以是[0-9]{2}或[0-9]{1},所以我猜测类似于[0-9]{1,2},但我不确定如何创建函数并在PHP中使用它。试试看
preg_replace("/(\d{1,2}(am|pm))(\d{1,2}(am|pm))/", "$1-$3", $string);
演示:试试看
preg_replace("/(\d{1,2}(am|pm))(\d{1,2}(am|pm))/", "$1-$3", $string);
演示:这应该可以为您处理时间,您可以通过一个简单的if语句来完成:
$output = preg_replace('/^([0-9]{1,2}(am|pm))-?([0-9]{1,2}(am|pm))$/i', '$1-$3', $input);
这将为您解决时间问题,您可以使用一个简单的if语句:
$output = preg_replace('/^([0-9]{1,2}(am|pm))-?([0-9]{1,2}(am|pm))$/i', '$1-$3', $input);
这是一个使用的版本,因此它只需注入一个字符:
return preg_replace('/(?<=[a-z])(?=\d)/', "-", $arg);
它只查找字符串中字母所在的位置?这是一个使用的版本,因此它只需插入一个字符:
return preg_replace('/(?<=[a-z])(?=\d)/', "-", $arg);
它只在字符串中查找字母所在的位置?这个怎么样:
function format_date($date)
{
if( $date == 'off' ) return 'off';
return preg_replace( '/^(\d{1,2}\w{2})(\d{1,2}\w{2})$/' , '${1}-${2}' , $date );
}
我想你是说输入看起来像第一个框,格式应该像第二个框?这个怎么样:
function format_date($date)
{
if( $date == 'off' ) return 'off';
return preg_replace( '/^(\d{1,2}\w{2})(\d{1,2}\w{2})$/' , '${1}-${2}' , $date );
}
我想你是说输入看起来像第一个框,格式应该像第二个框?你会遇到12:20这样的时间吗?或者这些总是在时间上?查看一些有助于设计简单正则表达式的工具。你会遇到像下午12:20这样的时间吗?或者这些工具总是在工作时间?查看一些有助于设计简单正则表达式的工具。[a-z]可以被m-love短正则表达式取代;[a-z]可以替换为m-love短正则表达式;