我想删除日期字符串中的所有-
和/
个字符。有人可以帮我一把吗?
这是我所拥有的,但它不起作用。
preg_replace('/','',$date);
preg_replace('-','',$date);
另外,有没有办法将这两个表达式组合在一起,所以我不必有2个preg_replaces?
答案 0 :(得分:3)
使用$date = str_replace(aray('/','-'),'',$date);
它也快得多。
答案 1 :(得分:1)
使用'translate'方法代替正则表达式。在PHP中,那将是strtr()
strtr( $date, '/-', '' );
答案 2 :(得分:0)
是的!您需要仔细查看manual中$pattern
的示例。
以下是使用preg_replace()
的示例:
#!/usr/bin/env php
<?
$date = "2009/08/07";
echo "Before: ${date}\n";
$date = preg_replace('/[-\/]/', '', $date);
echo "After: ${date}\n";
$date = "2009-08-07";
echo "Before: ${date}\n";
$date = preg_replace('/[-\/]/', '', $date);
echo "After: ${date}\n";
?>
% ./test.php
Before: 2009/08/07
After: 20090807
Before: 2009-08-07
After: 20090807
答案 3 :(得分:0)
[/\-]
是效率最高的。
答案 4 :(得分:0)
由于您要将一个字符替换为另一个字符,因此基于正则表达式的解决方案是一种过度杀伤力。您可以使用str_replace
作为:
$edited_date = str_replace(array('/','-'),'',$date);
现在你的preg_replace
出了什么问题?
preg_replace
期望正则表达式被一对分隔符包围。所以这应该有效:
$edited_date = preg_replace('#-#','',$date);
同样str_replace
,preg_replace
也接受数组,因此你可以这样做:
$from = array('#/#','#-#');
$to = '';
$edited_date = preg_replace($from,$to,$date);
此外,您可以将要删除的两个模式组合在一个正则表达式中:
$edited_date = preg_replace('#-|/#','',$date);