PHP preg_replace множественные заменыPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP preg_replace множественные замены

Сообщение Anonymous »

Я довольно слаб в регулярных выражениях, и попытки разобраться в них вызывают у меня головную боль. Я просто пытаюсь извлечь время из строки и изменить текст времени. Я получаю строки в следующих формах:

Код: Выделить всё

"Some text I don't care about | 2.3 seconds ago"
"Some text I don't care about | 5.2 minutes ago"
"Some text I don't care about | 7.0 hours ago"
"Some text I don't care about | 1.9 days ago"
Я хотел бы заменить приведенные выше строки, чтобы они были в формах соответственно:

Код: Выделить всё

"2.3 secs"
"5.2 mins"
"7.0 hrs"
"1.9 days"
Я знаю основы замены в регулярном выражении, но удалять несколько элементов перед и за текстом, который мне нужен, а также заменять «часы» на «часы» и т. д. выходит за рамки моего уровня навыков в регулярных выражениях.

Буду признателен за любую помощь.

Спасибо.

РЕДАКТИРОВАТЬ:

Ну, повозившись, я пришел к решению, использующему несколько разных функций. Мне это не совсем нравится, но это работает. Я бы предпочел одно решение preg_replace, если это возможно. Вот мое текущее уродливое решение:

Код: Выделить всё

$testString = "This is text I don't care about | 7.3 seconds ago";
$testString = array_shift(array_reverse(explode('|', $testString)));
$pattern = array('/seconds/', '/minutes/', '/hours/', '/ago/');
$replace = array('secs', 'mins', 'hrs', '');
$testString = trim(preg_replace($pattern, $replace, $testString));
Выход: 7,3 секунды

Подробнее здесь: https://stackoverflow.com/questions/367 ... placements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»