по ПХП подскажите : регулярные выражения.
Новая тема Написать ответ
# Ср Мар 26, 2008 7:42 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
как в переменной типа содерж:
$tmp = "lalala\n" . "lalala\n" . "lalala\n" . "la<igogo>lala</igogo>\n"....

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

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

зы: а то что написал я - в 20 раз хуже и беднее, чем то что написано нв php.net (не реклама!)))
# Чт Мар 27, 2008 9:35 amctapbiu Зарег.: 06.01.2008 ; Сообщ.: 328Ответить с цитатой
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 будет в любом другом тэге
# Чт Мар 27, 2008 6:38 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
также надо мне узнать как делать замену в цикле..
т.е. напр первое попадание заменить на 1 второе на 2.... и так далее..
т.е. заменять не на что то одно а на разные ..
напр брать из массива, где $a[0] замена первого попадания.. $a[1] второго.. и так далее
?

также я имел ввиду что тег неконстанта,
т.е. ТЕГ один и тотже..
а содерж между этими тегами разное т.е. надо юзать (.*)
типа так.
# Чт Мар 27, 2008 9:31 pmctapbiu Зарег.: 06.01.2008 ; Сообщ.: 328Ответить с цитатой
$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];
}
# Вт Апр 08, 2008 12:38 amIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
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
# Вс Май 04, 2008 7:41 pmIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
и еще подскажите..
как регулярными выражениями (без Снопи модуль) собрать линки с стр.
т.е. маски для рег. выражения такое должны быть..

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

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

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

?

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


ПС - развертку в полный линк, ненадо..
# Пн Май 05, 2008 1:20 ambrush Зарег.: 29.09.2005 ; Сообщ.: 2572Ответить с цитатой
IseeDeadPeople писал(а):
т.е. надо короче код сделать..

вот для этого и придумали фрилансеров и гонорары, бля.. при полном нежелании включать голову - должно хотя бы появляться желание кого-нить нанять...
тут тебе должно быть пох на a href - тебе надо выдрать куски текста которые ссылки; т.е. просто вбить в гугль "рег_эксп для найти все гиперссылки в тексте"
это простое выражение, валяеца повсюду
# Пн Май 05, 2008 1:45 amIseeDeadPeople Зарег.: 06.12.2005 ; Сообщ.: 21733Ответить с цитатой
а я так недумаю..
вот у меня есть пару книг по ПХП + опыт...
знаю как можно это сделать очень толстым рег. выражением.. в 10 строк.. и то оно работает на ПХП 5 некорректно.. + именно с рег. выражениями у меня и проблемы.. я всетаки лайт программер, просто знаю что такое можно сделать .. но ....
вот и спрашиваю.
мне все таки помощь нужна _конкретная_ а не учения какой я глупый и ленивый как бы...
кстати что такое фрии ланс я незнаю.

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

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