2010-10-14 2 views
2

Я хочу удалить все - и / символов в строке даты. Может кто-нибудь дать мне руку?preg_replace и date

Вот что у меня есть, но оно не работает.

preg_replace('/','',$date); 
preg_replace('-','',$date); 

Кроме того, есть ли способ, чтобы сгруппировать эти два выражения вместе, так что я не должен иметь 2 preg_replaces?

ответ

3

$date = str_replace(aray('/','-'),'',$date); Это также намного быстрее.

+0

Thanks ts. Это работает. Я дам вам кредит здесь через 4 минуты, поскольку он не позволит мне принять до этого – chad

1

Вместо регулярного выражения используйте метод «переводить». В PHP, который был бы strtr()

strtr($date, '/-', ''); 
0

Да! Вам нужно более подробно ознакомиться с примерами $pattern в manual.

Вот пример использования 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 
0

[/\-] является наиболее эффективным, я думаю.

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);