Несколько вопросов о использовании регулярных выражений

Novichok08

Новичок
Несколько вопросов о использовании регулярных выражений

Здравствуйте!
Как видно из моего ника я новичок в PHP. Я прочитал арочку книг, а теперь приступил к практике. У меня появилось несколько вопросов, на которые я никак не могу найти ответ. Помогите, пожалуйста...
Первый вопрос не отностся к регулярным выражениям, но всё же:
Я встретил в ПХП два оператора == и === достойного описания их различий так и не встретил.
Всё что нашёл:
== Равно
=== Идентично
А в чём различия? В чём сходства?

Вот появилась ещё несколько вопросов:
Как я ни пытался но полностью понять смысл этих строк я так и не смог:
PHP:
$source = str_replace(array ("? ", "! "), ".", $source);
$source = str_replace(array (" -", "- ", "\t", "\r", "\n", "|",  "&", '\\', '/',  " :", " ;", "©", "·"), ' ', $source);
$source = str_replace(array (")", "(", "]", "[", "'", "\"", '*', '•', '~', '{', '}'), '', $source);
$source = str_replace(" ,", ",", $source);
$source = preg_replace("~(\s+\d{1,2}\s+)|(\w*\.\w+)~", " ", $source);
$source = preg_replace("~\s+~", " ", $source);
Как я понял первая строчка заменяет точкой вопросительные и восклицательные знаки.
Вторая заменяет редко используемые знаки препинания и всякие разрывы строки, пробелами.
Третья убирает скобки, тильды, звёздочки слэши.
Четвёртая убирает пробел перед запятой.
Я прав? Е сли нет исправьте, пожалуйста.

Но вот понять, что происходит в 5 и 6-й строках так и не могу. Если вам не трудно обьясните, пожалуйста.

P.S. Заранее прошу прощения, если что-то сделал не так.
Всем спасибо!
 

basboy

Новичок
Я встретил в ПХП два оператора == и === достойного описания их различий так и не встретил.
$num=1;

if($num==1) // будет true
if($num=='1') // будет true
if($num===1) // будет true
if($num==='1') // будет false

т.е. === учитывает тип
 

Духовность™

Продвинутый новичок
== Равно
=== Идентично
А в чём различия? В чём сходства?
http://www.php.net/manual/ru/language.operators.comparison.php

$a === $b
Тождественно равно
TRUE если $a равно $b и имеет тот же тип.
смысл этих строк я так и не смог
частный случай использования. и далеко не самый красивый.


Но вот понять, что происходит в 5 и 6-й строках так и не могу.
http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php
 

basboy

Новичок
str_replace не относится к функциям, обрабатывающим рег. выражениям
в мане всё подробно написано (видимо твои книжки на мануа лчхали) http://www.php.net/str_replace
 

mak_sim2001

Новичок
Re: Несколько вопросов о использовании регулярных выражений

Автор оригинала: Novichok08

Я встретил в ПХП два оператора == и === достойного описания их различий так и не встретил.
Всё что нашёл:
== Равно
=== Идентично
А в чём различия? В чём сходства?
=== должен совподать и типы переменной и значение

Вот появилась ещё несколько вопросов:
Как я ни пытался но полностью понять смысл этих строк я так и не смог:
PHP:
$source = str_replace(array ("? ", "! "), ".", $source);
$source = str_replace(array (" -", "- ", "\t", "\r", "\n", "|",  "&", '\\', '/',  " :", " ;", "©", "·"), ' ', $source);
$source = str_replace(array (")", "(", "]", "[", "'", "\"", '*', '•', '~', '{', '}'), '', $source);
$source = str_replace(" ,", ",", $source);
Как я понял первая строчка заменяет точкой вопросительные и восклицательные знаки.
Вторая заменяет редко используемые знаки препинания и всякие разрывы строки, пробелами.
Третья убирает скобки, тильды, звёздочки слэши.
Четвёртая убирает пробел перед запятой.
Я прав? Е сли нет исправьте, пожалуйста.
Да, тут лучше всего может помочь разобратся мануал http://ua2.php.net/manual/ru/function.str-replace.php а вообще его лучше иметь в виде файла на компе(help) http://www.php.net/download-docs.php

Но вот понять, что происходит в 5 и 6-й строках так и не могу. Если вам не трудно обьясните, пожалуйста.
регулярные выражения - PCRE. На сайте есть неплохие статьи

-~{}~ 05.01.08 13:19:

опоздал
 

Фанат

oncle terrible
Команда форума
я не пойму, зачем давать ему ссылку на str_replace, если он с ней и так разобрался?

-~{}~ 05.01.08 13:23:

$source = preg_replace("~\s+~", " ", $source);
тильды - ~ - это просто ограничители, на их месте может быть любой символ. \s - символьный класс, означает любой пробельный символ
плюс означает любое количество предыдущего символа.

а статьи Юкко не годятся для ответа на вопрос, что значат паттерны в регах
 

Novichok08

Новичок
Автор оригинала: *****
я не пойму, зачем давать ему ссылку на str_replace, если он с ней и так разобрался?

-~{}~ 05.01.08 13:23:


тильды - ~ - это просто ограничители, на их месте может быть любой символ. \s - символьный класс, означает любой пробельный символ
плюс означает любое количество предыдущего символа.
т.е. эта строка заменяет пробельные символы на символ " " ?
А можно поподробнее про пробельные символы? Где про это можно почитать.
А что в пред последней строке делается?

Вообще для тренировки я пытаюсь этот кусок кода перевести на паскаль. Вот поэтому и пытаюсь всё подробнейшим способом выспросить.
 

Beavis

Banned
Novichok08
откуда в паскале регулярные выражения???
а по поводу регулярок на РНР вам сказали - надо читать мануал, на форуме всего не объяснишь!!
 

Novichok08

Новичок
Автор оригинала: Beavis
Novichok08
откуда в паскале регулярные выражения???
а по поводу регулярок на РНР вам сказали - надо читать мануал, на форуме всего не объяснишь!!
Где я написал, чио в пакале есть регулярные выражения??? Я написал, что перевожу прогу с ПХП на паскаль, и чтобы это сделать мне нужно 100% понимать смысл этой проги.
 

Novichok08

Новичок
Прочитал, вроде как стал понимать хоть чуть-чуть. Только вот не понятно для чего нужны скобки () и | ?
 

Novichok08

Новичок
"~(\s+\d{1,2}\s+)|(\w*\.\w+)~"

(\s+\d{1,2}\s+) - один или более сиволов пробела, 2 цифры, один или более сиволов пробела

(\w*\.\w+) - возможно стоит буквенный символ, потом точка, потом один или более буквенный символ

| как я понял это or

Я прав?
А как это теперь соеденить? Вроде пораздельно понимаю что значит, а общий смысл нет.
 

Фанат

oncle terrible
Команда форума
попробуй узнать, какие входные данные требуются этой программе.
 

Фанат

oncle terrible
Команда форума
клёво.
вот этот рег описывает этот текст.

-~{}~ 05.01.08 20:34:

вообще странный рег.
я не понимаю его смысла
 

Novichok08

Новичок
Автор оригинала: *****
клёво.
вот этот рег описывает этот текст.

-~{}~ 05.01.08 20:34:

вообще странный рег.
я не понимаю его смысла
я тоже, собственно, поэтому и пришёл сюда...
 

Фанат

oncle terrible
Команда форума
здесь тебе не помогут понять, чего хотел автор программы.
что делает рег - ты и сам знаешь. а зачем - это не к нам
 

Novichok08

Новичок
Автор оригинала: *****
здесь тебе не помогут понять, чего хотел автор программы.
что делает рег - ты и сам знаешь. а зачем - это не к нам
Вот к сожалению я до конца не могу понять что этот рег делает(или мне так кажется...).
 
Сверху