Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Реги


Автор: Aliance 21.2.2005, 17:58
Подскажите как работать с регами в php?
Переходя с JS всегда путаюсь. Не могли бы вы мне раз и на всегда объяснить их синтаксис smile

Автор: penizillin 21.2.2005, 18:17
раз и на всегда? http://php.net/pcre

Автор: Akina 21.2.2005, 18:19
Цитата
PHP uses the POSIX extended regular expressions as defined by POSIX 1003.2. For a full description of POSIX regular expressions see the regex man pages included in the regex directory in the PHP distribution. It's in manpage format, so you'll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.


Цитата
PHP also supports regular expressions using a Perl-compatible syntax using the PCRE functions. Those functions support non-greedy matching, assertions, conditional subpatterns, and a number of other features not supported by the POSIX-extended regular expression syntax.


Так про какие реги речь - preg или ereg?

Автор: Aliance 21.2.2005, 18:29
ЭЭ, нет, возможно я не так выразился (не силен в сленге PHPсшика), мне нужно вот что:
Код

$body=eregi_replace("@id@",$id,$body)

Что тут, да как.

Автор: Sardar 21.2.2005, 19:30
Aliance а что собственно проблему вызывает? Заменяем пару букв id на содержимое переменной $id и строки $body. Ты это знаешь, тогда где именно проблема? smile

Или хочешь знать как реги вообще работают, в смысле самому реализовать(ДКА, формальные грамматики и т.п.) ?

Автор: Aliance 21.2.2005, 20:20
«Хочу знать все» smile
Хочу чтобы написали шаблон из того, что я написал, скажем так:
Код

$variable=eregi_replace("x",$x,$variable)

И описать что есть каждая переменная. Что есть g, gi или i (вдруг отличаються от JS)

Автор: IZ@TOP 21.2.2005, 21:55
Цитата(Aliance @ 21.2.2005, 21:20)
$variable=eregi_replace("x",$x,$variable)

Найти в тексте одну букву "х". В $variables будет находится "х" если таковой имелся в тексте.

Дам тебе совет: используй лучше preg_match/preg_match_all/preg_replace and etc. Они удобнее, быстрее.


Автор: Aliance 21.2.2005, 22:41
Цитата(IZ @ 21.2.2005, 21:55)
Найти в тексте одну букву "х". В $variables будет находится "х" если таковой имелся в тексте.

А $x зачем?

Автор: IZ@TOP 22.2.2005, 00:11
Цитата(Aliance @ 21.2.2005, 23:41)
А $x зачем?

А... черт... блин. Это относилось к eregi smile eregi_replace производит замену по шаблону. То есть в данном случае все x будут заменены на содержимое переменной $x, а в $variable должен находится текст замены.

Пример:

Код
$variable = 'Test xxx string :D';

$x = 'a';

$variable = eregi_replace('x', $x, $variable);

echo $variable; // "Test aaa string :D"

Но в данном случае использование функции eregi_replace нецелесообразно. Чтобы произвести замену простого текста надо использовать функцию str_replace.

Автор: Aliance 22.2.2005, 15:13
Это мне нужно для заметы кодов в гостевой книге smile

Автор: IZ@TOP 22.2.2005, 16:50
Aliance, если заменять будешь символы - используй str_replace, если ББ Коды то preg_replace.
Например:

Код
$text = "Bla [b]bla[/b] bla...";

$text = preg_replace("|[b](.*)[\/b]|si", "<b>\\1</b>", $text);

Автор: S.A.P. 22.2.2005, 17:01
Цитата(IZ @ 22.2.2005, 16:50)
Aliance, если заменять будешь символы - используй str_replace, если ББ Коды то preg_replace.
Например:

Код
$text = "Bla [b]bla[/b] bla...";

$text = preg_replace("|[b](.*)[\/b]|si", "<b>\\1</b>", $text);

Только еще модификатор U надо поставить, а то строку [Ь]енонео[/Ь]еонео[Ь]оеоее[/Ь] полностью жирной сделает.

Автор: Aliance 22.2.2005, 17:18
Цитата(Perchilla @ 22.2.2005, 17:01)
siU

Так?

Автор: IZ@TOP 22.2.2005, 20:32
Aliance, по моему без разницы. Но вообще вроде всегда сначало ставят.
i - чтобы не различать регистр букв.
s - вроде для того чтобы с переводами строк работал.

Автор: S.A.P. 22.2.2005, 20:35
Aliance вот здесь я недавно подобный пример спрашивал http://forum.vingrad.ru/index.php?showtopic=42643

Автор: Aliance 22.2.2005, 22:06
Фу, запуталсИ (
Давайте заного. Есть текстариа (name="test")
Как мне все " и ' в ней заменить на \" и \' соотв.?

Автор: Mal Hack 22.2.2005, 22:49
Цитата(Aliance @ 22.2.2005, 22:06)
Как мне все " и ' в ней заменить на \" и \' соотв.?

addslashes();

Автор: Aliance 23.2.2005, 17:43
А поп-подробнее?
Мне этот метод мало о чем говорит ;)

Автор: IZ@TOP 23.2.2005, 20:05
Aliance, если тебе какой-то метод мало о чем говорит, можно посмотреть на сайте где об этом все написано, т.е. на php.net. Для этого берем имя функции и дописываем ее к адресу php.net/func_name, или ru3.php.net/func_name.

Автор: S.A.P. 23.2.2005, 20:08
Вот здесь хорошо про реги на PHP написано. Я от сюда копать начинал http://detail.phpclub.net/article/2001-02-06/

Автор: Aliance 23.2.2005, 20:38
Спасибо за «полезные» ссылки. Они, естественно, мне лучше объяснять, чем могли бы вы...

Автор: S.A.P. 23.2.2005, 20:55
Aliance а разве нет? Эта тема уже третий день висит, а на прочтение этих статей ушло бы максимум 3 часа.

Автор: Aliance 24.2.2005, 21:15
Цитата(Perchilla @ 23.2.2005, 20:55)
а на прочтение этих статей ушло бы максимум 3 часа

...которых у меня нет smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)