Forum Webscript.Ru

Программирование => PHP => Тема начата: Nerian от 18 Июля 2005, 21:25:52

Название: Сложный парсинг строки регулярными выражениями
Отправлено: Nerian от 18 Июля 2005, 21:25:52
Всем привет! Кто может подсказать как преобразовать строку вида "word word digital word real.real word", с помощью регулятрного выражения в html строку с выделением отдельным цветом все слова, цифры, и цифры с плавающей запятой?
Допустим чтобы word\'у соответсвовал color=red, digital=blue, real=green.
И в итоге из указанной выше строки получилось бы следующее:
word word digital word real.real word?
Вся сложность обстоит в том что после первой замены всех допустим цифр на определённый цвет добавяться теги, и потом теги так же будут обработаны регулярным выражением как слова. Как быть?
Название: Сложный парсинг строки регулярными выражениями
Отправлено: serezniy от 18 Июля 2005, 23:09:43
Цитировать
Вся сложность обстоит в том что после первой замены всех допустим цифр на определённый цвет добавяться теги, и потом теги так же будут обработаны регулярным выражением как слова. Как быть?

например брать из исходной строки по "одному слову", добавлять теги, и уже в переработанном виде приделывать к новой строке.
пример:

$str="font green ёлка 354";

$arr=explode(" ",$str); //Разделяем на фрагменты по пробелу
foreach ($arr as $value) //Разукрашиваем каждый элемент в зависимости от его типа
{
if(is_numeric($value))
{
   $result[]=\'\'.$value."";
   continue;
}
if(is_string($value))
{
   $result[]=\'\'.$value."";
}
}
echo implode(" ",$result); //Объединяем фрагменты и выводим результат