И снова регулярные выражения

  • Автор темы Автор темы kombo
  • Дата начала Дата начала

kombo

Новичок
И снова регулярные выражения

Как сделать так, чтобы в строке str1;str2;str3; символы ";" заменялись на ";<li>" , но только кроме последнего ";", причем строка может выглядеть и так str1;str2;str3 или str1;str2;str3. или str1;str2;str3- и т.д.
Возможно необязательно регулярными выражениями это нужно делать. Заранее спасибо.
 
разрезать строку по последнему ";", заменить в мервой части ";" на ";<li>" и склеить обратно.
 
Массивы для такой мелкой операции я бы не хотел использовать. Может есть менее затратный путь ?
 
нет, для того, что бы разрезать строку на две части explode не нужен.
 
а я бы так сделал, работает быстрее.
$str1 = rtrim($str,";");
$str1 = preg_replace("/;/",";<il>",$str1);

...
да, а с str_replace еще быстрее =)
 
А можно конкретнее ? Выражение для str_replace и как разрезать строку по последнему ";". Последним символом в строке может быть и не ";"

-~{}~ 04.02.04 18:42:

Вариант от McLay не видел. Сейчас попробую
 
не, если последний символ в строке не ;, и все равно нужно удалить последний из всех ;, то rtrim не подходит.
 
пример с использованием регекспов:
$str = preg_replace("~;(?!$)~", ";<li>", $str);
 
Товариши отвечающие, вы действительно считаете, что здесь нужны регулярные выражения ?
 
Я что-то не нашел в пхп функии которая делила бы строку по последнему вхождению какого-то символа. Остается только самому что-то дописывать или делить регулярными выражениями. Или я плохо искал?
 
McLay
есть фунция, которая ищет последнее вхождение строки, и есть функция, которая делет строку по количеству символов. А вообще, если в конце гарантировано стоит ";" то сделать можно еще проще.

Maxim Matyukhin
это не оптимизация, это элемеентарные действия.
 
Сверху