АРМАДА
по ПХП подскажите : регулярные выражения.
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Ср Мар 26, 2008 7:42 pmДобавить в избранноеОтветить с цитатой
как в переменной типа содерж:
$tmp = "lalala\n" . "lalala\n" . "lalala\n" . "la<igogo>lala</igogo>\n"....

содержимое ВСЕХ тегов "<igogo>lala</igogo>" заменить на что то другое? (lala -> blabla - напр.) ??

как будет выглядеть ereg ф. или как еще можно сделать ?
http://m.lsl.com/

brush
V.I.P.
Зарегистрирован: 29.09.2005
Сообщений: 2566
Обратиться по нику
# Добавлено:Ср Мар 26, 2008 11:51 pmОтветить с цитатой
ну если ereg, то eregi_replace()
$my_str = eregi_replace('>lala<', '>blabla<', $tmp);
echo $my_str;
то есть, это не регэксп, а тупая замена
preg_replace - уже pcre, то есть вполне себе регулярные выражения (и работает быстрее)
но для того что ты написал - достаточно eregi

зы: а то что написал я - в 20 раз хуже и беднее, чем то что написано нв php.net (не реклама!)))

ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Чт Мар 27, 2008 9:35 amОтветить с цитатой
IseeDeadPeople, если сам тэг нужно оставить:
$res = preg_replace('!(<igogo>).*(</igogo>)!iU', '$1blabla$2', $tmp);
если тэг тоже нужно убрать:
Код:

$res = preg_replace('!<igogo>.*</igogo>!iU', 'blablabla', $tmp);


ну и конечно подробней об этом здесь: http://php.net/preg_replace
подробней по модификаторам шаблонов: http://www.php.net/manual/ru/reference.pcre.pattern.modifiers.php
синтаксис регулярных выражений: http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php

brush, может быть 2 ситуации, когда ваш код не будет работать:
1) когда в тэге <igogo> будет что-нибудь другое, отличное от lala
2) когда lala будет в любом другом тэге

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Чт Мар 27, 2008 6:38 pmОтветить с цитатой
также надо мне узнать как делать замену в цикле..
т.е. напр первое попадание заменить на 1 второе на 2.... и так далее..
т.е. заменять не на что то одно а на разные ..
напр брать из массива, где $a[0] замена первого попадания.. $a[1] второго.. и так далее
?

также я имел ввиду что тег неконстанта,
т.е. ТЕГ один и тотже..
а содерж между этими тегами разное т.е. надо юзать (.*)
типа так.
http://m.lsl.com/

ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Чт Мар 27, 2008 9:31 pmОтветить с цитатой
$arr = array(1, 2, 3);
$res = preg_replace_callback('!(<igogo>).*(</igogo>)!iU', replace_function, $tmp, count($arr));

function replace_function($m) {
global $arr;
return $m[1] . array_shift($arr) . $m[2];
}

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вт Апр 08, 2008 12:38 amОтветить с цитатой
brush,
Цитата:
ну если ereg, то eregi_replace()


спасибо :mrgreen:

ctapbiu,
Цитата:
$arr = array(1, 2, 3);
$res = preg_replace_callback('!(<igogo>).*(</igogo>)!iU', replace_function, $tmp, count($arr));

function replace_function($m) {
global $arr;
return $m[1] . array_shift($arr) . $m[2];
}



большое тебе спасибо! Wink
http://m.lsl.com/

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вс Май 04, 2008 7:41 pmОтветить с цитатой
и еще подскажите..
как регулярными выражениями (без Снопи модуль) собрать линки с стр.
т.е. маски для рег. выражения такое должны быть..

a href=""
a href=''
A href=""
a Href=''
a Href=>

т.е. параметр i юзая надо (без регистра сравнивать), + ротация возможности как ' или "

+ и в последней строке, только пробел
т.е. и такое надо видеть..
a href=http://ponyclub.com> и a href=http://ponyclub.com title=.....>

?

т.е. надо короче код сделать..
спасибо.


ПС - развертку в полный линк, ненадо..
http://m.lsl.com/

brush
V.I.P.
Зарегистрирован: 29.09.2005
Сообщений: 2566
Обратиться по нику
# Добавлено:Пн Май 05, 2008 1:20 amОтветить с цитатой
IseeDeadPeople писал(а):
т.е. надо короче код сделать..

вот для этого и придумали фрилансеров и гонорары, бля.. при полном нежелании включать голову - должно хотя бы появляться желание кого-нить нанять...
тут тебе должно быть пох на a href - тебе надо выдрать куски текста которые ссылки; т.е. просто вбить в гугль "рег_эксп для найти все гиперссылки в тексте"
это простое выражение, валяеца повсюду

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Пн Май 05, 2008 1:45 amОтветить с цитатой
а я так недумаю..
вот у меня есть пару книг по ПХП + опыт...
знаю как можно это сделать очень толстым рег. выражением.. в 10 строк.. и то оно работает на ПХП 5 некорректно.. + именно с рег. выражениями у меня и проблемы.. я всетаки лайт программер, просто знаю что такое можно сделать .. но ....
вот и спрашиваю.
мне все таки помощь нужна _конкретная_ а не учения какой я глупый и ленивый как бы...
кстати что такое фрии ланс я незнаю.

вообщем спасибо тебе бруш за внимание.. но я жду чора тут или керка. или даже лучьше ctapbiu.
http://m.lsl.com/

brush
V.I.P.
Зарегистрирован: 29.09.2005
Сообщений: 2566
Обратиться по нику
# Добавлено:Пн Май 05, 2008 11:09 pmОтветить с цитатой
IseeDeadPeople писал(а):
а я так недумаю..
вот у меня есть пару книг по ПХП + опыт...
знаю как можно это сделать очень толстым рег. выражением.. в 10 строк..

ага, это видно по остальным твоим вопросам
я НЕ знаю, как это сделать толстым выражением в 10 строк - поому что это делается несложным выражением в одну недлинную строку
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры