URL String zerschneiden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • URL String zerschneiden

    Hallo zusammen,

    Heute was einfaches für euch (und unlösbares für mich) :)

    Ich habe eine IF Schleife die mir ein Array erstellt in welchen ich Werte aus einer Rückgabe speicher. Soweit so gut.

    Derzeit nutze ich hierfür folgenden Code:

    Quellcode

    1. $resarr = array();
    2. $suchtext="transportinfo.asp?jref=";
    3. $x=count($array);
    4. for($y=0;$y<$x;$y++){
    5. if(array_key_exists($y,$array)){
    6. if(substr_count($array[$y], $suchtext) > 0){
    7. $ref = substr($array[$y], 62);
    8. array_push($resarr,$ref." - ".$thetime.";");
    9. }
    10. }else{
    11. $x++;
    12. }
    13. }
    Alles anzeigen


    Sodala, danach habe ich mein Array mit den Werten.
    der ursprüngliche Link sieht so aus:

    netmanage.mdv.abcd.ca/jobtools/jobinfo.asp?jref=535840

    Nun möchte ich es so abändern das im Array drei Werte gespeichert werden, der zu nutzende Link sieht so aus:
    netmanage.mdv.abcd.ca/jobtools…5840&cid=010101010&jid=54

    Ich brauche den wert nach jref und den wert cid und den wert jid in einem array. Wie lässt sich das zuverlässig machen?
    Des weiteren sehe ich in meinem Code das Problem wenn der Link sich ändern sollte (HTTPS statt HTTP zum beispiel) das ich dann mit meinem "Brich alles vor dem 62ten Zeichen ab" Probleme habe ...

    Danke für eure Hilfe,
    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • HI,

    du willst nur die werte von jref, cid und jid in ein array haben?

    warum nimmst du nicht $_REQUEST? darin sind alle infos die du brauchst :)

    zugriff bekommst du mit $_REQUEST['jref'], $_REQUEST['cid'] bzw $_REQUEST['jid']


    oder hab ich dich jetzt falsch verstanden???


    mfg da BendIt
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Hi!

    Danke für den Tip, aber da ich hier nicht normal über den Browser arbeite sondern mit einer Snoopy Klasse habe ich das so nicht zum Laufen gebracht.

    Bisschen weiter bin ich ja schon.

    Mit folgendem Code:

    Quellcode

    1. $ref = explode('=',$array[$y]);
    2. print_r($ref);


    bekomme ich folgende Ausgabe:

    Array
    (
    [0] => netmanage.mdv.abcde.ca/jobtools/resendjob.asp?jref
    [1] => 535840&cid
    [2] => 490005278&jid
    [3] => 54
    )

    Wie aber kann ich nun bei den Arraywerten in 1 und 2 immer die letzten 4 stellen abschneiden?

    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi!

    Ich habe es nun wiefolgt gelöst:

    Quellcode

    1. $suchtext="resendjob.asp?";
    2. $x=count($array);
    3. for($y=0;$y<$x;$y++){
    4. if(array_key_exists($y,$array)){
    5. if(substr_count($array[$y], $suchtext) > 0){
    6. $url = "http://netmanage.mdv.vlnet.ca/login.asp";
    7. $vars["Username"] = "matthias.orczak@venali.com";
    8. $vars["Password"] = "2legalize";
    9. $vars["LOGIN"] = 'Login';
    10. $snoopy = new Snoopy();
    11. $snoopy->submit($url, $vars);
    12. $ref = explode('=',$array[$y]);
    13. $jref = substr($ref[1], 0, -4);
    14. $cid = substr($ref[2], 0, -4);
    15. $jid = $ref[3];
    Alles anzeigen


    Und es funktioniert, ich kann sie nutzen wie ich möchte, und die URL's sind statisch - gut, donut's Lösung wäre mir auch lieber, aber die rennt einfach ned .... egal wie ich es versuche.

    Hier mal mein komplettes Script:

    Quellcode

    1. <?php
    2. ini_set (display_errors,"1");
    3. include ("/var/www/stopjob/Snoopy.class.php");
    4. $timestamp = time();
    5. $thetime = date("H:i",$timestamp);
    6. $url = "http://netmanage.mdv.abcde.ca/login.asp";
    7. $vars["Username"] = "matthias.orczak@firma.com";
    8. $vars["Password"] = "2legalize";
    9. $vars["LOGIN"] = 'Login';
    10. $snoopy = new Snoopy();
    11. $snoopy->submit($url, $vars);
    12. $snoopy->fetchlinks("http://netmanage.mdv.abcde.ca/reports/jobscompleted.asp?minp=0&maxp=100&minr=0&d=0&cid=490005278");
    13. $content = $snoopy->results;
    14. $counter = count($content);
    15. function object2array($object)
    16. {
    17. $return = NULL;
    18. if(is_array($object))
    19. {
    20. foreach($object as $key => $value)
    21. $return[$key] = object2array($value);
    22. }
    23. else
    24. {
    25. $var = get_object_vars($object);
    26. if($var)
    27. {
    28. foreach($var as $key => $value)
    29. $return[$key] = object2array($value);
    30. }
    31. else
    32. return strval($object); // strval and everything is fine
    33. }
    34. return $return;
    35. }
    36. $array = object2array($content);
    37. $resarr = array();
    38. $suchtext="resendjob.asp?";
    39. $x=count($array);
    40. for($y=0;$y<$x;$y++){
    41. if(array_key_exists($y,$array)){
    42. if(substr_count($array[$y], $suchtext) > 0){
    43. $url = "http://netmanage.mdv.abcde.ca/login.asp";
    44. $vars["Username"] = "matthias.orczak@firma.com";
    45. $vars["Password"] = "2legalize";
    46. $vars["LOGIN"] = 'Login';
    47. $snoopy = new Snoopy();
    48. $snoopy->submit($url, $vars);
    49. $ref = explode('=',$array[$y]);
    50. $jref = substr($ref[1], 0, -4);
    51. $cid = substr($ref[2], 0, -4);
    52. $jid = $ref[3];
    53. $stopparams1 = "";
    54. $snoopy->submit("http://netmanage.mdv.abcde.ca/jobtools/jobtool.asp?cmd=stop&jref=".$jref."&cid=".$cid."&jid=".$jid,$stopparams1);
    55. echo $snoopy->results;
    56. array_push($resarr,"Job Reference Number: ".$jref." - "."Stopped at: ".$thetime." - "."Job ID: ".$jid.";");
    57. }
    58. }else{
    59. $x++;
    60. }
    61. }
    62. $final = implode(";", $resarr);
    63. $final = str_replace(";","<br>",$final);
    64. $desc = "Dear valued Customer,"."<br><br>"."The broadcast jobs with the following jobreferences have been stopped: "."<br />";
    65. $desc1 = "This includes jobs that may have been completed already at that time"."<br>";
    66. $desc2 = "If you have any questions don't hesitate to contact us via suppe@abcde.com or 110"."<br><br>"."kind regards,"."<br>"."your Suppen Team";
    67. $emailtext = $desc."<br>".$final."<br>".$desc1.$desc2;
    68. $header = 'MIME-Version: 1.0' . "\r\n";
    69. $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    70. $header .= 'From: <noreply@firma.com>' . "\r\n";
    71. $mail_empfaenger='<Matthias.Orczak@firma.com>';
    72. $betreff="Status Stopped Jobs";
    73. $text= $content;
    74. $text1 = $content1;
    75. mail($mail_empfaenger, $betreff, $emailtext, $header);
    76. ?>
    77. </body>
    78. </html>
    Alles anzeigen
    Das Leben ist binär - du bist eine 1, oder eine 0
  • auch in Zusammenhang damit, solltest du deinen Programmierstil überarbeiten.
    • Mit Hinsicht auf PHP>4 würde ich Variablen nie $object nennen, da das in manchen Programmiersrachen als Schlüsselwort reserviert ist
    • Snoopy brauchst du nur einmalig initialisieren
    • Einrückungen überarbeiten
    • Regel überlegen, wann du foreach wann die for-Schleife nutzt
    • #54 ist überflüssig, da du die Länge unmittelbar davor ermittelst
  • Wenn du damit bezwecken willst, dass dein Kollege es beim vorbeilaufen nicht sehen kann, dann kannst du crypt verwenden.
    Aber schützen tut das nicht. Man muss nur decrypt aufrufen *g* Hashen bringt dir natürlich auch nichts, da die Daten original ankommen müssen.

    Du kannst deinen überarbeiteten Code dann einfach oben ändern, sind ja keine Fehler drin. Dann braucht man keine 500 Zeilen scrollen *g*
    Hier ein Wiki Eintrag zur Analyse: [coderwiki]HowTos/PHP-String-URLs-analysieren[/coderwiki]