Автор Тема: Регулярные. Паттерны хелп плиз.  (Прочитано 8113 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #15 : 24 Июня 2002, 18:43:06 »
Ребята! все очень хорошо, весь этот ..дешь, но только вот

if (is_uploaded_file($legend)) {
    
$legend file ($legend);
	
$legen implode (""$legend);
	
preg_match("/<body>(.*?)<\\/body>/im",$legen$matches); 
	
echo 
"OK
"
.$matches[0];
	
echo (
join(" "$matches));
}

не хочет работать..... а так очень конкретно все обсудили ...  
Цитировать
тут вобще-то можно и простые строковые функции использовать: 2 strpos() и один раз substr()
вот это наверное правильнее всего будет...... насколько я понял они меньше тормозить будут . Спасибо.
Ну а все-таки как  с регами то...........

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #16 : 24 Июня 2002, 18:51:08 »
Цитировать
Нормальных программистов вообще мало, а уж в РНР, на котором каждая кухарка берется писать - и совсем кот наплакал.
А с кухарки - какой спрос. Кончено она будет делать "как удобнее", а не как оптимальнее.

Англо-русский словарь:  chef - шеф-повар, главный повар
изд. "Сов. энциклопедия" М. - 1967

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регулярные. Паттерны хелп плиз.
« Ответ #17 : 24 Июня 2002, 19:03:55 »
Ну, ты-то даже и в кухарки не годишься, мой мальчик.
Уж самая тупая догадается из форума пример скоипровать, а тебе и это не удалось.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #18 : 24 Июня 2002, 19:15:04 »
Цитировать
не хочет работать.....
дык что именно не работает? Что в массиве $matches ?
что error_reporting(E_ALL) выдает?

"/(.*?)<\\/body>/im" - слеши правильно стоят?
- так и написано в файле или там ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Регулярные. Паттерны хелп плиз.
« Ответ #19 : 24 Июня 2002, 20:32:18 »
Цитировать
"/(.*?)<\\/body>/im"

Только еще модификатор s нужно добавить, а m можно и убрать:
preg_match("/<body[^>]*>(.*?)<\\/body>/is"$legen$matches);
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #20 : 24 Июня 2002, 22:20:11 »
GotZfild
Warning: Unknown modifier \'b\' in f:\\www\\teacher_func.php3 on line 123
это ответ на preg_match("/<body[^>]*>(.*?)</body>/is"$legen$matches);
$matches - массив но пустой.......
Цитировать
error_reporting(E_ALL)
Unknown modifier \'b\' in ...
Undefined offset: 1 in....

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Регулярные. Паттерны хелп плиз.
« Ответ #21 : 24 Июня 2002, 22:33:58 »
Косая черта вырезалась. Попробую еще раз:
preg_match("/<body[^>]*>(.*?)<\\\\/body>/is"$legen$matches);
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #22 : 24 Июня 2002, 22:40:04 »
походу сработало!
Большое спа.

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные. Паттерны хелп плиз.
« Ответ #23 : 24 Июня 2002, 22:46:08 »
но  сами остались....... можно их того......

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регулярные. Паттерны хелп плиз.
« Ответ #24 : 25 Июня 2002, 10:44:58 »
Можно и их того.

<?php
$file
=fopen("./index.htm","r");
$content=fread($file,filesize("./index.htm"));
print \
'<pre>\';
print "$content\\n";


if (preg_match_all(\'/<body.*?>(.*?)<\\/body>/si\',$content,$res,\'PREG_PATTERN_MATCH\'))
    print $res[1][0];
else print \'nothing matched\';
print \'</pre>\';
?>

Прошу обратить внимание на:
1) у закрывающего тега перед / стоит \\. Что избавляет тебя от ошибок, которые выскакивали  (надеюсь, ты сам уже это понял)
2) модификатор регулярного выражения s, который означает, что вас не укачает (шутка). Который означает, что . - это любой символ ВКЛЮЧАЯ конец строки (без него, вообще говоря, работать будет не всегда)
3) содержимое между тегами в регулярном выражении взято в скобки, что позволяет обращаться к нему при помощи массива res[1].

В общем, RTFM по адресу http://www.php.net/manual/en/function.preg-match-all.php .
Там даже примеры есть (и, кстати, некоторые из них - как вырезать содержимое тегов)
TANSTAAFL

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28