Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match_all tut nichts

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_match_all tut nichts

    Hallo Leute,

    ich glaube heute ist mein Problem nicht so trivial wie das letzte Mal, zumindest hoffe ich es

    Ich habe das Problem, dass mein preg_match_all nichr läuft.

    Das Array:
    PHP-Code:
    $arrSumaData = array("google"     => 
                                   array(
    "name" => "www.google.de",
                                           
    "url"     => "http://www.google.de/search?hl=de&q=",
                                           
    "ok"     => "",
                                           
    "cfg"    => "2",
                                           
    "0"       => "@<h2 class=r><a href=\"(.*)\" class=l>@isU"# <= das ist der Pattern
                                           
    "1"       => "@<span class=a>(.*)</span>@isU",
                                  
    "foreveryone" =>
                                  array(
    "name"   => "www.4-every-1.de",
                                           
    "url"      => "http://de.4-every-1.ws/cgi-bin/search.pl?go=deutsch&searchval=",
                                           
    "ok"      => "",
                                           
    "cfg"     => "1",
                                           
    "0"        => "@<a href=\"(.*)\">@isU"))); 
    Die Passage im Script:
    PHP-Code:
    $pattern $arrSumaData[$arrSuma[$x]][$y];
    preg_match_all($pattern,$query_string,$result); 
    Ich probiert ein "or Die('error preg match all')" ranzuhängen und er springt genau da raus.

    In $pattern ist genau das, was drin sein soll.

    Need your help...

    drieling

  • #2
    Und was steht nun genau in $pattern und was steht in $query_string?

    Ich bin mir nicht sicher, ob @ als delimiter in preg-RegExps funktioniert, ich benutze immer /. Da # aber auch funktioniert, nehme ich mal an, dass das mit dem @ schon so stimmt.

    Schreib vielleicht mal noch n'paar Zeilen Code mehr von dem, was da vor preg_match_all() steht.

    Kommentar


    • #3
      In $query_string ist der inhalt der suchmaschinen ergebnisseite und im pattern der 0, 1, 2 aus dem array.

      zum besseren verständnis hier mal eben das gesamte skript. (bitte nicht über das durcheinander wundern, bin grad dabei das ding komplett zu überarbeiten...
      achso un vom Forumular vorher kommt z.B. suma[]="google" und kdname=bla-firma
      PHP-Code:
      <?php

      # Platzierungsübersicht v. 1.5
      # c.drieling@44u.com 2007

      error_reporting(E_ALL);
      $kdname $_POST['kdname'];
      $arrSuma $_POST['suma'];

      function 
      readData($kdname$dataType) {
          
      $datei         "daten/".$kdname."-".$dataType.".txt"    ;
          
      $fp             fopen($datei"r")
                                      or die(
      $datei." nicht gefunden")        ;                        
          
      $data         fgetcsv($fp,2048,";")
                                      or die(
      "Lesefehler von ".$datei)        ;
          
      fclose($fp);
          return 
      $data;
      }
                
      $arrUrls                     readData($kdname,"urls")                ;
      $arrKeywords             readData($kdname,"keywords")        ;
      $arrKdBezeichung     readData($kdname,"bez")                    ;

      $strKdBezeichnung         $arrKdBezeichung[0]                            ;

      $arrSumaData            = array("google"     => 
                                                          array(
      "name"     => "www.google.de",
                                                                      
      "url"        => "http://www.google.de/search?hl=de&q=",
                                                                      
      "ok"        => "",
                                                                      
      "cfg"        => "2",
                                                                      
      "0"            => "@<h2 class=r><a href=\"(.*)\" class=l>@isU",
                                                                      
      "1"         => "@<span class=a>(.*)</span>@isU",
                                                          
      "foreveryone" =>
                                                          array(
      "name"    => "www.4-every-1.de",
                                                                      
      "url"        => "http://de.4-every-1.ws/cgi-bin/search.pl?go=deutsch&searchval=",
                                                                      
      "ok"        => "",
                                                                      
      "cfg"        => "1",
                                                                      
      "0"            => "@<a href=\"(.*)\">@isU")));

      function 
      request($arrSuma$arrSumaData$arrKeywords$arrUrls) {
          
      $anzahl_keywords     count($arrKeywords)    ;
          
      $anzahl_urls             count($arrUrls)            ;
          
          for (
      $t=0;$t<$anzahl_keywords;$t++){
              echo 
      "<td><center>$arrKeywords[$t]</center></td>";
          } 
          echo 
      "</td>";
          
          
      $anzahl_suma count ($arrSuma);
          
          for (
      $x=0;$x<$anzahl_suma;$x++) {    
              
      #Suchmaschine#
              
      $sumaName $arrSumaData[$arrSuma[$x]]['name'];
              echo
      "<tr><td>$sumaName</td>";        
              
              for(
      $z=0;$z<$anzahl_keywords;$z++){
                  
      $bFound 0;
                  
      #Keywords#
                  
      $query_string $arrSumaData[$arrSuma[$x]]['url'].urlencode($arrKeywords[$z]);
                  
      $serp                    file_get_contents($query_string)
                                              or die(
      $query_string." konnte nicht geöffnet werden.");        
                  
      $anzahl_cfg $arrSumaData[$arrSuma[$x]]['cfg'];
                  echo 
      "<td>";
                  
                  for (
      $y=0;$y<$anzahl_cfg;$y++) {
                      
                      
      $pattern $arrSumaData[$arrSuma[$x]][$y];
                      
      preg_match_all($pattern,$query_string,$result);                
                      
      $countValues count($result[1]);
                      
                      for (
      $s=0;$s<$countValues;$s++) {
                          
      $found false;
                          
      $tmpRes $result[1][$s];
              
                          for (
      $u=0;$u<$anzahl_urls;$u++){
                              
      $suchUrl $arrUrls[$u];
                              
      preg_match("@{$suchUrl}@"$tmpRes$found);
                              if (
      $found)    {    
                                  echo 
      "found";
                                  break;
                              }
                              else { echo 
      "x"; }
                          }
                      }
                  
      #if ($bFound == 1) { echo "FOUND"; } else { echo "NOT FOUND"; };
                  
      }            
                  echo 
      "</td>";
              }

              echo 
      "</tr>";
          }
      }
      ?>
      <table border="1"><tr><td></td>
      <?
      request($arrSuma, $arrSumaData, $arrKeywords, $arrUrls)

      ?>
      und als ausgabe erscheint momentan:
      PHP-Code:
      <table border="1"><tr><td></td>
      <
      td><center>bundeskanzlerin</center></td><td><center>bundeskanzler</center></td></td><tr><td>www.google.de</td><td></td><td></td></tr

      Kommentar


      • #4
        Hallo

        Bitte korrigiere mich, wenn ich was falsches sage, ich hab den Durchblick noch immer nicht so ganz. Dennoch:

        PHP-Code:
        $query_string $arrSumaData[$arrSuma[$x]]['url'].urlencode($arrKeywords[$z]);
        $serp file_get_contents($query_string
        Hier setzt du $query_string auf die Url. Also das, was in $arrSumaData[$arrSuma[$x]][url] drin steht. Und hängst dann ein Keyword an, quasi das Suchwort für die Google anfrage.

        Auf der nächsten Zeile führst du die Anfrage aus, und schreibst das ganze als string in $serp.

        Soweit korrekt?

        Falls ja, dann frage ich mich, was passiert nun mit $serp? Ich sehe keine weiteren Vorkommnisse. Sollte das nicht in der Preg_match verwendet werden? Anstelle von $query_string? Weil ich glaube, in $query_string steht immernoch die Anfrageurl drin...

        Ich hoffe ich hab das bis hier richtig verstanden. Falls nein, klär mich auf, damit ich vieleicht schlauer werde

        Kommentar


        • #5
          Das Problem wurde gelöst, ich hatte einen logischen Fehler, (es wurden falsche Daten geladen...)

          Danke

          Kommentar

          Lädt...
          X