Знаю, тема заежжена вдоль и поперёк, но всё же вот столкнулся с такой проблемой. Точнее, споткнулся на одном из этапов решения задачи. Подскажите, где я недоглядел. Вобщем, задача: вводится в форму УРЛ, мы просматриваем страницу, ищем e-mail'ы и сохраняем в файл. Вот что у меня получилось: PHP: <?php $url = $_POST['URL']; $ch = curl_init ($url); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec ($ch); curl_close ($ch); $temp_file = "temp.txt"; /* это я пытался решить проблему сохранением в файл и считыванием... $fp = fopen ($temp_file, "wb"); if ( flock ($fp, LOCK_EX)) { fwrite ($fp, $content); flock ($fp, LOCK_UN); echo "Файл " . $temp_file . " записан<br>"; } else echo "Ошибка запирания файла !"; $fp = fopen ($temp_file, "r"); if ( flock ($fp, LOCK_SH)) { $temp = fread ($fp, filesize ($temp_file)); flock ($fp, LOCK_UN); echo "Файл " . $temp_file . " считан<br>"; } else echo "Ошибка запирания файла !"; */ /* $fp = fopen ($_POST['URL'], "r"); while ($f = fgets ($fp, 1024)) $content .= $f; */ // phpinfo (32); // поиск по шаблону preg_match_all ("/(mailto:)?(([\w-]+\.?)+@[\w-]+\.[\w-]+(\.[\w-]+)*)(\?[\w-]*=[\w-]*)?/i", $content, $found); $n = count ($found[0]); foreach ($found[2] as $email) echo "<br>" . $email; echo "<br><br>" . $n; /* if ( $n > 0 ) { $fp = fopen ("emails.txt", "a+t"); if ( flock ($fp, LOCK_EX)) { for ( $i = 0; $i < $n; $i++ ) { fwrite ($fp, $found[0][$i] . "%%"); } flock ($fp, LOCK_UN); } else echo "Ошибка запирания файла !"; } */ echo "<pre>"; print_r ($found[2]); echo "</pre>"; echo $_POST['URL']; ?> <form name="SearchEmails" action="" method="POST"> <input type="text" name="URL" size="100" value="<?php echo $_POST['URL'];?>"><br> <input type="submit" value="Выдрать e-mail адреса !" style="height: 30px; width: 626px; border: 1px solid"> </form> Проблема в чём: регулярное выражение работает нормально, в простом тексте находит e-mail'ы, выводит их отформатированно и красиво. Когда вызываю URL - не находит совпадений. Пытался взять кусок скачанной страницы, присвоить переменной и провести поиск по переменной. Тот же результат. Тогда убирал части строки, в итоге убрал какие-то 5 символов - и работает. Вернул символы - не работает. Вот что делал: PHP: $temp = "d as sad ВАШ_НИК_В_SKYNET@skynet.kherson.ua sadlj <br><img src='/templates/Default/images/[b]dlet_adblock_2.gif[/b]' width='18' height='60'></td> <td align='center'><div align='CENTER'><a href='mailto:stranger@skynet.kherson.ua'><img src='/uploads/banner.jpg' style='border: none;' /></a></div></td> <td width='18' align='right' valign='top'> [email=str-anger@skynet.kherson.ua]str-anger@skynet.kherson.ua[/email] "; так находит только "ВАШ_НИК_В_SKYNET@skynet.kherson.ua". Если убрать выделенную жирным подстроку - будет находить остальные ("stranger@skynet.kherson.ua", "str-anger@skynet.kherson.ua") вопрос: кто знает почему ?)) Понимаю, так себе головоломка. Но всё таки, нужно заставить работать скрипт нормально.
2.5. Запрещается создание тем и ведение обсуждений о методах, направленных на взлом, неправомочное использование ресурсов или кражу контента сайтов.