Как сделать замену регулярного выражения, добавив символы в строку даты? - PullRequest
0 голосов
/ 10 октября 2008

для PHP

У меня свидание, я хочу, чтобы строка была завернута.

У меня есть $ date = '2008-09-28 9:19 pm'; Мне нужно, чтобы первый пробел заменили на бр стать

2008-09-28<br>9:19 pm

Если бы не этот второй пробел до PM, я бы просто str_replace () это.

Ответы [ 5 ]

0 голосов
/ 10 октября 2008

Другой способ сделать это быстрее, но немного больше кода, это

$date = substr($date, 0, 10) . '<br>' . substr($date, 11);
0 голосов
/ 10 октября 2008

Если вы хотите, чтобы регулярное выражение совпадало с шаблоном и возвращало обе части, вы можете использовать следующее. Однако, учитывая, что все, что вы делаете, это замена только 1 пробела, попробуйте str_replace_once, который я предложу после регулярного выражения. Regex предназначен для сложного анализа вместо расточительного использования, например, замены одного пробела (без обид).

Обратите внимание, что ниже приведен код браузера, поэтому не пытайтесь использовать его дословно. На всякий случай опечатка.

$regex = '/([\d]{4}-[\d]{2}-[\d]{2}) ([\d]{1,2}:[\d]{2} (am|pm))/';
$match = preg_match($regex, '2008-09-28 9:19 pm');
print $match[1];  // Returns 2008-09-28
print $match[2];  // Returns 9:19 pm

// Or replace:
preg_replace($regex, '$1<br>$2', $date);

Я предлагаю следующий, гораздо более быстрый механизм. См. этот пост для функции str_replace_once().

str_replace_once(' ', '<br>', $date);
0 голосов
/ 10 октября 2008
$date = '2008-09-28 9:19 pm';
$result = preg_replace('/(\d{4}-\d{2}-\d{2}) (.*)/', '$1<br>$2', $date);
0 голосов
/ 10 октября 2008
$date = preg_replace('/ /', '<br>', $date, 1);
0 голосов
/ 10 октября 2008

s/ /<br\/>/ должен это сделать. Хотя регулярное выражение PHP может быть жадным и заменить все пробелы.

редактировать

Я поддерживаю PHP-решение Бена Хоффштейна. По возможности, избегайте регулярных выражений, так как почти всегда имеет непреднамеренные побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...