Помогите с регулярным выражением!

BuTbKa

Новичок
Помогите с регулярным выражением!

У меня строка
$s='Arry&#1087&#1082n&#1075&#1089&#1082&#1086&#1077 &#1096&#1086&#1089&#1089&#1077 15';

как с помощью регулярных выражений после каждого кода символа поставить ';'?
 

skynet80

rundesigner.com
Я так понимаю что надо ставить после каждого числа вот и проверяй число это или не число, а насчет пятнадцати в конце строки проверяй не последний это знак.
 

SiMM

Новичок
По моему ты уже вообще обнаглел. Готовое решение тебе уже было дано здесь (всего то надо чуть-чуть исправить).
+ PHP FAQ: Регулярные выражения.
PS: не можешь регулярниками - делай строковомы функциями. Хоть какая-то польза для мозгов.
 

amorfis

я стараюсь
Короче держи код. На этом форуме все в основоном пишут фразы типа: "почитай ман" или "что обнаглел совсем?". Но ты на них не обижайся, просто так тут принято. Мой код обычно тут ругают, но это лучше все-таки чем фразы, которые я написал выше.
PHP:
$str="$s='Arry&#1087&#1082n&#1075&#1089&#1082&#1086&#1077 &#1096&#1086&#1089&#1089&#1077 15';";
preg_match_all("(#[0-9]{4})",$str,$matches); // ищем все коды
// в массиве matches под индексом 0 будет хранится еще один массив,
// в котором содержаться все твои коды. Сделай print_r($matches) и все поймешь.
//print_r($matches);
// Создадим массив codes, где будут лежать все коды, при чем с помощью функции
// array_unique() мы выкенем все повторяющееся коды.
$codes=array_unique($matches[0]);
//print_r($codes);
//Просматриваем массив codes и меняем каждое значение в строке на него же, но с точкой запятой.
foreach ($codes as $val)
  $str=str_replace($val,$val.";",$str);
// Теперь когда выведешь на экран строку, то тебе выведется следующее: ='Arryпкnгское шоссе 15';
// Но если посмотришь HTML-код страницы, то ты убедишся, что после каждого кода стоит тоска с запятой
print $str;
 

MuXa247

Новичок
2 amorfis:

Правильно ругают :)
в таких случаях обычно preg_replace-м пользуются...
PHP:
$s = 'Arry&#1087&#1082n&#1075&#1089&#1082&#1086&#1077 &#1096&#1086&#1089&#1089&#1077 15';
$s = preg_replace("/(&#\d{4})/", "$1;", $s);
Но писать решение не стоит... лучше человека подвести к нему... :rolleyes:
 

amorfis

я стараюсь
MuXa247
Получается, что в $1 хранится результат поиска? Я этого не знал.
 

DiTHER

bang bang
amorfis, напишите хотя бы одну причину как можно не знать то что написано в мануале (не где-то там, а в самом главном мане!) по php? (php.net, ru3.php.net)
 

amorfis

я стараюсь
DiTHER
Ат ы что знаешь весь ман? По мойму это невозможно. Если ты конечно не ботан, который только и делает, что штудирует маны. :))))
 

SiMM

Новичок
> Ат ы что знаешь весь ман?
А его надо ВЕСЬ знать?

> Если ты конечно не ботан, который только и делает, что штудирует маны.
Извините, батенька, но если вы так считаете - то вам наверно стоит подумать о подборе более подходящей, "неботанической", профессии. Потому что лезть в мануал при возникновении проблем - вполне естесственное занятие для любого программиста. Тем более что ман по PHP - имхо, идеальный образец для подражания с точки зрения его организации.
 

amorfis

я стараюсь
Я тоже за ту позицию, что не надо все знать, надо уметь быстро находить. А насчет организации мана я с тобой полностью согласен.
 

DiTHER

bang bang
я это и имел ввиду. Тем более, на php.net комментариев практически на все возможное и невозможное хватает. А ещё @lists.php.net. Ведь это БЫСТРЕЕ чем спросить здесь!

-~{}~ 25.07.05 00:10:

"еще одного сорвало" подумал только что кое-кто..
 

amorfis

я стараюсь
Не хочу показаться несведущим или кем-то еще, но что такое @lists.php.net?
 
Сверху