нубу подскажите, по скрипту простому)

Да вообще-то такие вещи нужно еще до этого момента проверять. И не только на их существование. Валидацию данных еще никто не отменял ;)
 
это рандом от 3 до 10, то есть что-то из 3,4,5,6,7,8,9,10
 
лучше сделать проверку на переменные $name $contact $message и немного обезопасить скриптик!
 
взял в инете пример простого парсера:

PHP:
<?php
    //error_reporting(E_ALL); // врубал дя отладки
    set_time_limit(0); // чтоб успело дограбить всё
    ignore_user_abort(); // грабить не смотря на ошибки клиента
    
$fp = fopen('wsdstxt','w+'); // складываем награбленное в 
    
    for($i=0;true;$i++) { //цикл для счётчика паг
    $buf = file('http://ссс.сс/trt&'.$i); // конкретный дор я решил не светить
    preg_match_all('&id=(.*)&',$buf[3],$match); // кей в данном случае сидел только в тайтле, причем в анкорах внутренних линков кеев не было 

    $key = trim($match[1]," \r\n\t"); //режем переводы строк и прочее    

    if (empty($key)) break; // условие останова (для этого конкретного дора)

    fputs("$fp, $key@",$i++); // пишем в файл выдранный кей
    }
    fclose($fp); // закрываем файл 
         ?>

Мне нужно, чтобы он просто по указанному урлу, нашел в html
определенные тесты, вида "xxx.ru./xx/x&id=345202&"
и цифры параметра "id" записал в столбик в файл
но выдает ошибки... вот одна из них
Warning: fputs(:( supplied argument is not a valid stream resource in Z:\home\blogi\www\veshi.php on line 24


что не так?
 
1. Бесконечный цикл?
2. В данном случае вместо file(), лучше использовать file_get_contents()
3. Зачем break()? Можно просто проверить, если !empty($key), то добавить в массив/записать в файл
4. fputs($fp, $key) - _ttp://www.php.net/manual/en/function.fwrite.php
5. Не знаю насколько это критично, но имхо лучше в цикле создавать массив, а после выхода из цикла этот массив запихнуть в файл
Совет общего плана – подобные простенькие скрипты лучше писать с нуля, ибо там действительно 10-15 строк, а чужих глупостей хватает
 
я в пхп ничего не понимаю вообще...
взял образец подставил нужные данные, по идее работать должно было..
 
Можно здесь описание задачи запостить(без конкретных урлов) - найдутся люди, которым не лень лишний раз потренироваться.
Или можешь в личку прислать, посмотрю.
А насчет "работать должно" - ну если бесконечный цикл и остальное тебя устраивает, то исправь
PHP:
fputs("$fp, $key@",$i++);
на
PHP:
fputs($fp, $key."\r\n"); 
$i++;
и посмотри в свой файл wsdstxt, что получится.
 
  • Нравится
Реакции: doxx
есть скрипт,
парсит значения полей icq и майл.


PHP:
<?php
set_time_limit(0);
for($i=5000000; $i>1; $i--) {
$res = file_get_contents('http://*************'.$i);

preg_match('#<b>ICQ</b>: (.*?)<br />#i', $res, $m);
$icq = (isset($m[1])) ? $m[1]."\r\n" : '';
if($icq) {$fp = fopen('i.log', 'a'); fwrite($fp, $i.':'.$icq);}

preg_match('#<b>E-mail</b>: (.*?)<br />#i', $res, $m);
$mail = (isset($m[1])) ? $m[1]."\r\n" : '';
if($mail) {$fp = fopen('m.log', 'a'); fwrite($fp, $i.':'.$mail);}
}
?>



вопрос, какие должны быть значения preg_match
если нужно парсить в html коде:
1)
PHP:
 < t=имя Вася;>

(нужно выпарсить слово "Вася")



PHP:
 &; text=пошел гулять;>

(нужно выпарсить слово "пошел гулять"
но с учетом этого "&; text=", т.к если парсить просто по "text=" то в коде другие ненужны поля есть

заранее спасибо
 
для Васи(если реально "имя" в каждом случае присутствует, если нет - нужна доп инфа:(
Код:
<\s+t=имя\s+(.*?);>
для его действий ака гуляний:
Код:
&;\s+text=(.*?);>
 
  • Нравится
Реакции: doxx
Назад
Сверху