Seite 2 von 2 Erste 12
  1. #11
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    8.134
    Thanked 9.412 Times in 3.248 Posts
    Blog Entries
    5

    Standard AW: Dezimalzahlen im Array

    Zitat Zitat von Devon Beitrag anzeigen
    Wenn ich nur das Array ausgeben lassen, erscheint nur "Array" mehr nicht.
    echo akzeptiert nur strings, und da es in PHP keine Überladungen gibt kann somit auch keine für Arrays existieren. Wenn du einen Array zu Debugzwecken ausgeben willst geht das mit print_r(). Das ist aber Grundwissen und steht natürlich in der Doku..

    Zitat Zitat von Finn Beitrag anzeigen
    PHP-Code:
    $content file_get_contents('http://en.warrock.nexoneu.com/Ranking/GetProfile?nickname=Finn');
    preg_match_all('#<dd class="point">(.*?)</dd>#'$content$results);

    print_r($results); 
    Diese Lösung ist sowohl uneffizient als auch unflexibel. Du ließt Sachen aus, die gar nicht benötigt werden. Außerdem: Was ist wenn irgendwann ein anderer Wert mit gleichem Aufbau in die Quellseite eingefügt wird, und der hier gesuchte Wert dann nicht mehr an 1. Stelle im Array steht sondern an 2. oder sonst wo? Dann wird kompletter Blödsinn ausgelesen und ggf. merkt das eine ganze Zeit lang kein Mensch. Solche 'Wildcard-Pattern' sollte man vermeiden. Erst Recht, wenn es wie hier in diesem Fall gar keinen Grund dazu gibt.

    Besser:

    PHP-Code:
    $src file_get_contents("http://en.warrock.nexoneu.com/Ranking/GetProfile?nickname=Finn");
    $search = array(   
        
    "\r",   
        
    "\n",
        
    "\t",    
        
    " "
    );
    $src str_replace($search""$src);
    if(
    preg_match('#Deaths</dd><ddclass="point">(\d+(?:\.\d+)?)</dd>#'$src$matches)) {
        
    print_r($matches);

    Code:
    Array
    (
        [0] => Deaths</dd><ddclass="point">0.76</dd>
        [1] => 0.76
    )
    Mein pattern validiert auch gleichzeitig eine gültige Zahl, die eine Fließkommazahl sein kann, aber nicht muss. '1' wäre also genau so valide wie '1.555', aber nicht '1.'. Wobei zb einige CAS-Systeme erlauben, führende Nullen wegzulassen. Sprich '.5' wird akzeptiert und als '0.5' angesehen. Das wird bei einer öffentlichen Profilseite aber wohl eher nicht der Fall sein, da das wohl viele Leute verwirrt die das nicht wissen.


  2. The Following User Says Thank You to DMW007 For This Useful Post:

    Devon (03.07.2013)

  3. #12
    Avatar von Devon
    Registriert seit
    18.11.2011
    Beiträge
    2.189
    Thanked 1.576 Times in 1.025 Posts

    Standard AW: Dezimalzahlen im Array

    Ok, funktioniert soweit. Auch andere Dinge, die ich auslesen will funktionieren - nur bei zwei happert es noch, denke auch da ist mein Pattern falsch und ich selber finde den Fehler grad nicht. Array gibt mir nichts aus.

    PHP-Code:
    preg_match_all('/<dd class="numTxt">Level ([0-9]+)<\/dd>/Uis'$src$rank_level);

    preg_match_all('/<td>ACCOUNT STATUS<\/td><td class="rTxt">(.+)<\/td>/Uis'$src$account_status); 
    Das Erste wäre eine 2 oder 3 stellige Zahl. Das andere nur ein Wort aus 4-5 Buchstaben. Bevor ich die Änderungen, die mir vorgeschlagen wurden vorgenommen habe, hat es noch funktioniert. Wie gesagt, komme nicht dahinter warum er mir bei beidem nur

    Code:
    Array ( [0] => Array ( ) [1] => Array ( ) )
    ausgibt wenn ich es mit print_r debuge.

  4. #13
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    8.134
    Thanked 9.412 Times in 3.248 Posts
    Blog Entries
    5

    Standard AW: Dezimalzahlen im Array

    Wenn du meins übernommen hast werden alle Umbrüche, Tabs und Leerzeichen aus dem Quelltext entfernt. Macht die Sache bei mehrzeiligen Pattern einfacher sofern diese Zeichen nicht relevant sind, da man nicht jedes einzelne Leerzeichen berücksichtigen muss.


  5. The Following User Says Thank You to DMW007 For This Useful Post:

    Devon (04.07.2013)

  6. #14
    Avatar von Devon
    Registriert seit
    18.11.2011
    Beiträge
    2.189
    Thanked 1.576 Times in 1.025 Posts

    Standard AW: Dezimalzahlen im Array

    Stimmt. Wird ja mit

    PHP-Code:
    $search = array(   
        
    "\r",   
        
    "\n",
        
    "\t",    
        
    " "
    ); 
    entfernt bzw. gesucht, was ja vorher auch schon in meinem Snippet drin war. Gar nicht dran gedacht, dann kann es natürlich auch nicht funktionieren
    Geändert von Devon (04.07.2013 um 20:09 Uhr)

Seite 2 von 2 Erste 12

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 24.11.2013, 15:11
  2. Array - Dynamisches Menü
    Von Saad im Forum PHP
    Antworten: 1
    Letzter Beitrag: 26.03.2013, 13:46
  3. C# ListView Items in Array speichern
    Von Saad im Forum .Net
    Antworten: 5
    Letzter Beitrag: 09.10.2012, 18:56
  4. [VB][Frage] Alle Applets in einen Array
    Von rVs14 im Forum Sourcecode
    Antworten: 3
    Letzter Beitrag: 09.06.2012, 19:47
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.