За последние 24 часа нас посетили 16810 программистов и 1702 робота. Сейчас ищут 958 программистов ...

парсинг

Тема в разделе "Прочие вопросы по PHP", создана пользователем arsen2607, 29 май 2012.

  1. arsen2607

    arsen2607 Активный пользователь

    С нами с:
    10 май 2012
    Сообщения:
    11
    Симпатии:
    0
    Всем привет. Помогите: есть скрипт, который вытаскивает из исходного url назви ссылок, мне надо чтоб когда встречается в назве "(" или "," назву обрезать до этого символа, с душкой все норм, а вот с комой дает глюки, один раз выводит хорошо, другой раз какую то фигню, вопшем не работает правильно с ",".
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ничего не понял, покажите коды, что вы уже сделали и скажите, что хотите, только нормально.
     
  3. arsen2607

    arsen2607 Активный пользователь

    С нами с:
    10 май 2012
    Сообщения:
    11
    Симпатии:
    0
    почему с комой глюк а с "(" все норм

    for($i=0;$i<count($name[1]);$i++)
    {
    if($sep!=""){ //если мы указали "," или "("
    $z=strpos($name[1][$i],$sep); //то узнаем позицию символа
    $name2[1][$i]=substr($name[1][$i],0,$z); // и вырезаем
    } // $name[1] - это массив назв ссылок

    Добавлено спустя 5 минут 6 секунд:
    хотите могу весь скрипт выслать?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    отквочу для потомков сие бессмертное творение. вдруг автор удалит...
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Приведи пример ссылки с которой проблема и побольше кода.

    Тот кусок который ты привел работает правильно, по крайней мере у меня...
     
  6. arsen2607

    arsen2607 Активный пользователь

    С нами с:
    10 май 2012
    Сообщения:
    11
    Симпатии:
    0
    файл view.php

    <!DOCTYPE HTML>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <link rel="stylesheet" type="text/css" href="style.css"/>
    </style>
    <title></title>
    </head>
    <pre>
    <?php

    if((!isset($_POST['link'])) ||(!isset($_POST['start'])) ||(!isset($_POST['end'])))
    {
    //header("Location:index.php");
    echo "<a href=index.php><h2>Home</h2></a>";
    exit; // Ïåðåâ³ðÿºìî ÷è ïîëÿ íå ïóñò³, ÿêùî òàê, òî ïîâåðòàºìîñü íà ãîëîâíó
    }
    $url=$_POST['link'];
    $start=$_POST['start'];
    $end=$_POST['end'];
    $sep=$_POST['separator'];

    $n=parse_url($url, PHP_URL_HOST);



    $ch = curl_init(); // initialize curl handle
    curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
    $html = curl_exec($ch);

    if ($html==""){ // Ïåðåâ³ðÿºìî, ÷è èñõîäíèé êîä íå ïóñòèé, ÿêùî òàê, òî âèâîäèìî ïîâ³äîìëåííÿ
    echo "<h4>Íåìຠäîñòóïó äî ³íòåðíåòó, àáî</br>íåïðàâèëüíà àäðåñà ìàãàçèíó!</h4><br>
    <h3>Ïîâåðí³òüñÿ íà ãîëîâíó</h3>";
    echo "<a href=index.php><h2>Home</h2></a>";
    exit;
    }

    $str=str_replace("\n"," ",$html);

    $start=strpos($str,$start); // Âèçíà÷àºìî îñòàííº âõîäæåííÿ ïî÷àòêîâîãî áðåíäó
    $end=strripos($str,$end); // Âèçíà÷àºìî îñòàííº âõîäæåííÿ ê³íöåâîãî áðåíäó
    if($end!==false && $start!==false && $end>$start)
    {
    echo $start."</br>".$end;
    }else{
    $start=strripos($str,$start);
    }
    $k=$end-$start;
    $str=substr($str,$start,$k+50); // âèð³çàºìî òåêñò ì³æ start i end
    $str=str_replace('"',"",$str); // çàì³íÿºìî óñ³ " íà ïîðîæí³é ñèìâîë
    $str=str_replace("'","`",$str); // çàì³íÿºìî óñ³ ' íà ñèìâîë `
    $str=str_replace(",",".",$str);

    //Âèòÿãóºìî íàçâè ññèëîê
    $content = strip_tags($str,'<a>');
    preg_match_all("/>(.*?)<\/a>/", $content, $name); // ìàññèâ name[1] áóäå ì³ñòèòè íàçâè ññèëîê, òîáòî áðåíä³â

    if($name[1]==NULL)
    {
    $content = strip_tags($str,'<li> ');
    preg_match_all("/>(.*?)<\/li>/", $content, $name);;
    }
    if($name[1]==NULL)
    {
    $content = strip_tags($str,'<td> ');
    preg_match_all("/>(.*?)<\/td>/", $content, $name);;
    }

    $content2 = strip_tags($str,'<a>');
    preg_match_all("/<a\shref=(.*?)\>/", $content2, $link);
    //print_r($link[1]);

    for($i=0;$i<count($name[1]);$i++)
    {
    if($sep!=""){ // ÿêùî ³ñíóº ðîçä³ëüíèê
    $z=strpos($name[1][$i],$sep); // òî âèçíà÷àºìî éîãî ïîçèö³þ
    if(!empty($z))
    $name2[1][$i]=substr($name[1][$i],0,$z);// ³ âèð³çàºìî íàçâó ññèëêè äî öüîãî ðîçä³ëüíèêà
    }else
    $name2[1][$i]=$name[1][$i]; // ÿêùî í³ òî íàçâó çàëèøàºìî ö³ëîþ
    }
    ?>
    <h3><font color=#f00000>ʳëüê³ñòü áðåíä³â</font> - <?php echo count($name[1])?> </h3><br>
    <textarea id="textarea1" name="opent" cols="50" rows="25">
    <?php
    echo "\n";
    for ($i=0;$i<count($name[1]);$i++)
    {
    $i2=$i+1;
    if(strlen($name2[1][$i])>2 && strlen($name2[1][$i])<100){ // ÿêøî íàçâà áðåíäó >2 i <100 òî âèâîäèìî â textarea
    $name2[1][$i]=str_replace("`","'",$name2[1][$i]); // îáð³çàþ÷è ïðîá³ëè
    $name2[1][$i]=str_replace(".",",",$name2[1][$i]);
    echo "$i2\t".trim($name2[1][$i])."\n";
    }
    }
    ?>
    </textarea>
    <textarea id="textarea2" name="opent" cols="50" rows="25">
    <?php
    //foreach ($name[1] as $v)
    //echo "$v\n";
    echo "\n";
    for ($i=0;$i<count($name[1]);$i++)
    {
    $i2=$i+1;
    $name[1][$i]=str_replace(".",",",$name[1][$i]);
    $name[1][$i]=str_replace("`","'",$name[1][$i]); // âèâîäèìî áðåíäè áåç ðîçä³ëüíèêà
    if(strlen($name[1][$i])>2 && strlen($name[1][$i])<100) {
    echo "$i2\t".trim($name[1][$i])."\n";
    }
    }
    ?>
    </textarea>
    </pre>
    <body>
    </body>
    </html>

    Добавлено спустя 1 минуту 15 секунд:
    index.php

    <!DOCTYPE HTML>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title></title>
    </head>
    <form action="view.php" method="POST">
    <h2>Ââåä³òü àäðåñó ìàãàçèíó</h2><br>
    <SELECT NAME=link>
    <OPTION VALUE=http://www.intimo-shop.ru/>http://www.intimo-shop.ru/</OPTION>
    <OPTION VALUE=www.6pm.com/brands>www.6pm.com/brands</OPTION>
    <OPTION VALUE=www.adorama.com/catalog.tpl?op=brands>www.adorama.com/catalog.tpl?op=brands</OPTION>
    <OPTION VALUE=www.bodybuilding.com/store/listing.htm>www.bodybuilding.com/store/listing.htm</OPTION>
    <OPTION VALUE=www.chainreactioncycles.com/Sitemap.aspx>www.chainreactioncycles.com/Sitemap.aspx</OPTION>
    <OPTION VALUE=www.chemistdirect.co.uk/brand_index.php>www.chemistdirect.co.uk/brand_index.php</OPTION>
    <OPTION VALUE=www.dress-for-less.com/tmpl/en/brands.tmpl>www.dress-for-less.com/tmpl/en/brands.tmpl</OPTION>
    <OPTION VALUE=www.feelunique.com/content/brands>www.feelunique.com/content/brands</OPTION>
    <OPTION VALUE=www.focalprice.com/Brands>www.focalprice.com/Brands</OPTION>
    <OPTION VALUE=www.ru.forzieri.com/rus/brands_map.asp?l=rus&c=rus>www.ru.forzieri.com/rus/brands_map.asp?l=rus&c=rus</OPTION>
    <OPTION VALUE=www.fragrancedirect.co.uk/brand/icat/brand/>www.fragrancedirect.co.uk/brand/icat/brand/</OPTION>
    <OPTION VALUE=idiabet.ru/vendors.html>http://idiabet.ru/vendors.html</OPTION>
    <OPTION VALUE=www.lookfantastic.com/brands.dept>www.lookfantastic.com/brands.dept</OPTION>
    <OPTION VALUE=http://www.marriott.com/marriott-brands.mi>http://www.marriott.com/marriott-brands.mi</OPTION>
    <OPTION VALUE=http://www.profi-sport.ru/cat/~/~/~/~/brands/>http://www.profi-sport.ru/cat/~/~/~/~/brands/</OPTION>
    <OPTION VALUE=http://www.sapato.ru/brands/>http://www.sapato.ru/brands/</OPTION>
    <OPTION VALUE=http://shiekhshoes.com/brands.aspx>http://shiekhshoes.com/brands.aspx</OPTION>
    <OPTION VALUE=http://www.justeva.ru/shop/brands/>www.justeva.ru/shop/brands</OPTION>
    <OPTION VALUE=http://www.intimo-shop.ru/>http://www.intimo-shop.ru/</OPTION>
    <OPTION VALUE=http://shiekhshoes.com/brands.aspx>http://shiekhshoes.com/brands.aspx</OPTION>
    <OPTION VALUE=http://www.brendberry.ru/letter-a>http://www.brendberry.ru/letter-a</OPTION>
    </Select>
    <!--<input type="text" name="link" value="http://www.justeva.ru/shop/brands/" size=57><p> -->
    <h4>Ââåä³òü ïî÷àòêîâèé áðåíä Ââåä³òü ê³íöåâèé áðåíä</h4><p>
    <input type="text" name="start" value="Amarea" size=27></t\t>
    <input type="text" name="end" value="Zukerka" size=25><p>
    <h4>Âèáåð³òü ðîçä³ëüíèê â íàçâàõ áðåíä³â</h4>
    <SELECT NAME=separator>
    <OPTION value=""></OPTION>
    <OPTION VALUE="(">( - äóæêà</OPTION>
    <OPTION VALUE=".">, - êîìà</OPTION>
    <OPTION VALUE=" "> - ïðîá³ë</OPTION>
    </select><p>
    <input type="submit" name="submit" value=Send>
    <?php
    set_time_limit (30);
    ?>
    <body>
    </body>
    </html>
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7