【问题标题】:parsing multiple urls from the form从表单中解析多个 url
【发布时间】:2011-10-23 21:39:54
【问题描述】:

我正在尝试制作一个脚本,用于搜索表单中给出的 url 列表以查找电子邮件地址。谁能建议我怎么做? cURL 有什么替代品吗? 我尝试使用 file_get_contents,但脚本仅分析表单中给出的最后一个 url:当我在表单中输入例如两个 url 时,第一个 "print_r("show current_url:".$current_url); 是空的并且第二个它显示页面(url)内容(没有图片)。

我在不同的论坛上问过,但没有得到答复。非常感谢您的帮助。

谢谢

$urls = explode("\n", $_POST['urls']); 

$db = new mysqli('localhost', 'root', 'root', 'urls');  

if (mysqli_connect_errno()) {
    echo 'Błąd: ';
    exit;
}


for ($i=0; $i<count($urls); $i++){

print_r("show link:". $urls[$i]."<br>");

$current_url = file_get_contents($urls[$i]);
print_r("show current_url:". $current_url); 


    preg_match( "/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $current_url, $email);//email


    print_r ("show email:".$email[0]);


    $query = "INSERT INTO urle set adres = '$email[0]' "; 

    $result = $db->query($query);




}

if ($query) {
    echo $db->affected_rows ."pozycji dodano.";
} else {
    echo mysql_errno() . ":" . mysql_error() .   "Wyst&#261;pi&#322; b&#322;&#261;d przy dodawaniu urli  ";
}

$db->close();

?>

编辑: 我试过卷曲。 var_dump($email);显示:数组(0){} 该脚本现在在浏览器中显示表单中给出的所有 url,但 preg_match 不起作用,因此它不会提取电子邮件地址。

<?php


$urls = explode("\n", $_POST['urls']); 

$db = new mysqli('localhost', 'root', 'root', 'linki');  

if (mysqli_connect_errno()) {
    echo 'Błąd: ';
    exit;
}


for ($i=0; $i<count($urls); $i++){

    $url = $urls[$i];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
$output = curl_exec($ch);

preg_match( "/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $output, $email);//email
var_dump($email);

    $query = "INSERT INTO urle set adres = '$email[0]' "; 
    $result = $db->query($query);


curl_close($ch);



}//

if ($result) {
    echo $db->affected_rows ."pozycji dodano.";
} else {
    echo mysql_errno() . ":" . mysql_error() .   "Wystąpił błąd przy dodawaniu urli  ";
}

$db->close();

?>  

【问题讨论】:

    标签: php parsing curl file-get-contents


    【解决方案1】:

    cURL 有什么替代品吗?

    file_get_contents,它不会给您任何错误消息(除非引发 error_reporting),并且通常会被阻止,除非设置了 ini_set("user_agent", ...)

    或者HttpRequest 在较新的 PHP 安装上。

    还是curl 不难用。该手册充满了示例。

    第一个 "print_r("show current_url:".$current_url); 为空

    谁也说不准。调试它是你的责任(特别是因为你没有在你的问题中提到受影响的 url)。使用 curl 或 httprequest。

    【讨论】:

    • 我已经编辑了我的帖子并将脚本更改为 curl。上面描述了当前的问题。我指望你的帮助
    • 您需要 CURLOPT_RETURNTRANSFER。选项 CURLOPT_URL 毫无意义。
    【解决方案2】:

    好的,我已经解决了!!!:)

    代码如下:

    for ($i=0; $i<count($linki); $i++){
    
    $url = $linki[$i];
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $result =curl_exec($ch);
    curl_close($ch);
    
    preg_match("/[-a-z0-9\._]+@[-a-z0-9\._]+\.[a-z]{2,4}/", $result, $email);//email
    print_r($email);
    
        $zapytanie = "INSERT INTO urle set adres = '$email[0]' "; 
        $wynik = $db->query($zapytanie);
    
    
    
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      相关资源
      最近更新 更多