Замена последнего пробела на \t

Статус
В этой теме нельзя размещать новые ответы.

bob

Профессор
Регистрация
30 Авг 2011
Сообщения
155
Реакции
45
Подскажите пожалуйста регулярку для замены последнего в строке пробела на табуляцию.
пример исходного текста:

качественные эксклюзивные подарки мужчине 12
эксклюзивные подарки киев 170
пример желаемого:
качественные эксклюзивные подарки мужчине\t12
эксклюзивные подарки киев\t170
Спасибо.
 
PHP:
$str = preg_replace("/\s$/", '\t', $str);
 
Можно также заюзать rtrim() для удаления пробела справа и через конкатенацию добавить таб:
$str = rtrim($str).'\t';

Добавлено позже:
Прошу прощения за невнимательность - думал что пробел в конце строки.
Если пробел не в конце, то самый простой на мой взгляд способ - сделать реверс строки, заменить первый пробел, и снова сделать реверс строки.

PHP:
$str = 'Качественные подарки мужчине 12';
$str_new =strrev(preg_replace("/\s/", "\t", strrev($str), 1));
// возможно надо "побаловаться" с экранированием пробела в условии регулярки

Если исходный текст находится в файле, и содержит более чем одну строку, то многострочность реализуется так:
PHP:
$lines = file('http://www.example.com/text.txt');
foreach ($lines as $line_num => $str) {
  $str_new =strrev(preg_replace("/\s/", "\t", strrev($str), 1));
}
 
Правильная регулярка без всяких переворачиваний:
PHP:
$str = preg_replace("/(.*)\x20/", '$1\t', $str);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху