Регулярные выражения или "смотрю в книгу вижу фигу"

ЗАБАВА

Новичок
Регулярные выражения или "смотрю в книгу вижу фигу"

почему вот такая конструкция работает :
PHP:
eregi ("<title[^>]*>(.*)</title>", $text_file_extern, $title);
а вот такая нет :
PHP:
preg_match ("#<title[^>]*>(.*)</title>#", $text_file_extern, $title);
и ещё одно , я тут пытаюсь постичь невозможное, как вот интерпретировать комбинацию с "?" предположим строка из FAQ :
PHP:
$text=preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#",'<a href="\\0">\\0</a>',$text);
в первом случае он относится к литералу "s" - понятно - {0,1}, а что значит второе его употребление? К чему оно здесь?

или вот другая где-то в мануале видела : .*? :confused:
 

Fiva

Держу ZMH
что ты понимаешь под словом интерпретировать? рассказать что оно делает?
 

Fiva

Держу ZMH
а во втором случае он входит в набор символов, которых не должно быть(конструкция [^])
 

ЗАБАВА

Новичок
Автор оригинала: Fiva
а во втором случае он входит в набор символов, которых не должно быть(конструкция [^])
я так тоже подумала но я ещё и подумала что если это литерал то должен быт слеш перед ним, ок принимаю.

а что с моими "мучениями"? Почему мои конструкции не работают?

а как писать например если я хочу исключить целое слово, т.е. таким образом : ...[^</script>]*... - насколько я поняла РНР ищет каждую букву в отдельности, а мне надо ему сказать, что это не набор букв а слово а единое слово?

-~{}~ 19.05.05 12:31:

Автор оригинала: Sizz
PHP:
"#<title([^>]*)>(.*?)</title>#si"
ну вот пожалуйста...

что значит такая комбинация - ".*?" - я её так понимаю : все символы видимые и нет, сколько угодно, может и не быть, и максимум одна... :confused: Это же противоречи предыдущему условию...

и где почитать о "s" - "i" - и я знаю уже встречала
 

Fiva

Держу ZMH
ты лучше скажи какой текст ты запихиваешь в $text_file_extern и может быть тогда мы скажем почему не работает (кстати замечание sizz по поводу модификаторов si прими во внимание и включи их в preg_match)
 

ЗАБАВА

Новичок
приняла, теперь работает, но это замечание "s" что оно значит?

-~{}~ 19.05.05 12:50:

Автор оригинала: Fiva
ты лучше скажи какой текст ты запихиваешь в $text_file_extern и может быть тогда мы скажем почему не работает (кстати замечание sizz по поводу модификаторов si прими во внимание и включи их в preg_match)
я запихиваю из $text_file_extern в $title

а вообще-то мне надо следующее, пытаюсь самостоятельно сделать ан не выходит:

html-текст:

<!--------------------- Top ---------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>..... </title>
.....
<style>
...
</style>
....
.....
<script......>
....
</script>
....
....
</head>
....
<body ......... >
......
.....
<script>
......
</script>
......
.....
</body>
</html>

мне надо из этого текста целый тег
<script>
function openWindow(){...}
</script>
запомнить непосредственно с этой функцией, а остальные викинуть
и всё содержимое тега <body> ... </body> (без тегов) заисключением <script....>...</script> находящийся внутри него

не очень много? для меня пока да, ибо я только вчера читнула эту тему и нашла её СУПЕР!!! Нет только того рядом, кто бы "ткнул носом" :)
 

Fiva

Держу ZMH
Вобщето в таких случаях принято говорить RTFM и тыкать носом в мануал, но ладно, я по доброте душевной тебе скажу
модификатор i - без учета регистра
модификатор s - значит поиск не останавливается на переводе строки и идет дальше. Это и есть те самые отличия.

-~{}~ 19.05.05 14:45:

.*?
означает что ищется любой символ 0 или более раз, причем поиск идет не жадный(?), т.е. ищется наименьшее совпадение
 

ЗАБАВА

Новичок
Автор оригинала: Fiva
какого вопроса?
мне надо следующее, пытаюсь самостоятельно сделать ан не выходит:

html-текст:

<!--------------------- Top ---------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>..... </title>
.....
<style>
...
</style>
....
.....
<script......>
....
</script>
....
....
</head>
....
<body ......... >
......
.....
<script>
......
</script>
......
.....
</body>
</html>

мне надо из этого текста целый тег
<script>
function openWindow(){...}
</script>
запомнить непосредственно с этой функцией, а остальные викинуть
и всё содержимое тега <body> ... </body> (без тегов) заисключением <script....>...</script> находящийся внутри него
 

impossible

Новичок
модифицируйте сами :)
PHP:
<?

$test='
<!--------------------- Top ---------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>..... </title>
.....
<style>
...
</style>
....
.....
<script> 
111111111111111111 
</script>
....
....
</head>
....
<body ......... >
......
.....
<script>
2222222222222222222
</script>
......
.....1r
21mm2
</body>
</html>
';

preg_match_all("~(<script>)(((.)|(\x0A))*)(</script>)~U",$test,$result,PREG_PATTERN_ORDER);

for ($i=0;$i<count($result[0]);$i++) {
	echo htmlspecialchars($result[2][$i]).'<hr>';
}

?>
 

ЗАБАВА

Новичок
impossible ,

:mad:, издеваешься? а как на счёт необходимых условий?

мне надо из этого текста запомнить целый тег <script>

// например
<script langu....>
function openWindow() <- непосредственно с этой функцией
{
...
}
</script>

а остальные scriptы-теги викинуть целиком.

И :

запомнить всё содержимое тега <body> ... </body> (без тегов) заисключением <script....>...</script> находящийся внутри него
 

Фанат

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

ЗАБАВА

Новичок
черт возьми, рассуждальщики, у меня нет на вас времени. Хотите побеседовать давайте встретимся в другом месте и в свободное время.
 

Fiva

Держу ZMH
ЗАБАВА
на самом деле, кто тебе сказал что у них есть время что бы писать тебе с нуля регексп?
 

Фанат

oncle terrible
Команда форума
а при чём здесь готовый?
ей пояснения нужны.
ей нужно не готовый код, а чтобы вслух прочли документацию с этого сайта.
Замечательный курс по регулярным выражениям от Yukko
где всё подробно написано
 
Сверху