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

kombo

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

Как сделать так, чтобы в строке str1;str2;str3; символы ";" заменялись на ";<li>" , но только кроме последнего ";", причем строка может выглядеть и так str1;str2;str3 или str1;str2;str3. или str1;str2;str3- и т.д.
Возможно необязательно регулярными выражениями это нужно делать. Заранее спасибо.
 

Demiurg

Guest
разрезать строку по последнему ";", заменить в мервой части ";" на ";<li>" и склеить обратно.
 

kombo

Новичок
Массивы для такой мелкой операции я бы не хотел использовать. Может есть менее затратный путь ?
 

Demiurg

Guest
нет, для того, что бы разрезать строку на две части explode не нужен.
 

McLay

PHP5 BetaTeam
а я бы так сделал, работает быстрее.
$str1 = rtrim($str,";");
$str1 = preg_replace("/;/",";<il>",$str1);

...
да, а с str_replace еще быстрее =)
 

kombo

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

-~{}~ 04.02.04 18:42:

Вариант от McLay не видел. Сейчас попробую
 

McLay

PHP5 BetaTeam
не, если последний символ в строке не ;, и все равно нужно удалить последний из всех ;, то rtrim не подходит.
 

Макс

Старожил PHPClub
пример с использованием регекспов:
$str = preg_replace("~;(?!$)~", ";<li>", $str);
 

Demiurg

Guest
Товариши отвечающие, вы действительно считаете, что здесь нужны регулярные выражения ?
 

kombo

Новичок
Вариант от Maxim Matyukhin встал как родной. Всем спасибо.
 

McLay

PHP5 BetaTeam
Я что-то не нашел в пхп функии которая делила бы строку по последнему вхождению какого-то символа. Остается только самому что-то дописывать или делить регулярными выражениями. Или я плохо искал?
 

Demiurg

Guest
McLay
есть фунция, которая ищет последнее вхождение строки, и есть функция, которая делет строку по количеству символов. А вообще, если в конце гарантировано стоит ";" то сделать можно еще проще.

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