2012-04-14 13 views
0

Ich muss einige Werte aus einer URL extrahieren und diese Werte dann verwenden, um eine E-Mail zu senden.Analysieren einer Zeichenfolge zum Extrahieren von Werten in PHP

Dank der Art von Hilfe auf einigen anderen hier, ich habe es fast genagelt. Das Problem, das ich habe, ist, ist, dass die URL Anhängsel wie diese aussehen

?SessionID=582506&[email protected];joe bloggs;111.111.111.111&Status=203&Operator= 

Wie Sie die E-Mail-Adresse vielleicht bemerkt haben, Name, Menge und IP-Adresse werden alle in der Notiz Variable gespeichert, die durch ein Semikolon getrennt.

Gibt es eine Möglichkeit, den Notenwert zu analysieren und die Daten (die durch Semikolon begrenzt sind) daraus als separate Mengen zu extrahieren, die ich dann zum Erstellen einer E-Mail verwenden kann?

Vielen Dank im Voraus

Antwort

5

die Daten aus dem Note Parameter holen, teilen dann den Wert bei Semikolon (beispielsweise mit explode) und Sie können jeden Teil des Wertes in dem sich ergebenden Array erreichen.

$note = $_GET["Note"]; 
$note_parts = explode(";", $note); 

$email = $note_parts[0]; 
$name = $note_parts[1]; 
$addr = $note_parts[2]; 
0

Sie können explode und list verwenden. für die globale $_GET['Note'];

<?php 

list($mail,$name,$ip) = explode(';',$_GET['Note']); 

, wenn Sie die URL direkt parse_str werden Sie analysieren wollen helfen.

<?php 
    parse_str("SessionID=582506&[email protected];joe bloggs;111.111.111.111&Status=203&Operator=",$array); 
    var_dump($array); 
/* 
array(4) { 
    ["SessionID"]=> 
    string(6) "582506" 
    ["Note"]=> 
    string(41) "[email protected];joe bloggs;111.111.111.111" 
    ["Status"]=> 
    string(3) "203" 
    ["Operator"]=> 
    string(0) "" 
}*/ 
+0

Dank dafür - ich weiß, wie jeder Wert zu erhalten - was mit denen ich kämpfen, um die Note nach unten in seine Bestandteile trennt - E-Mail, Name , IP, Menge. irgendwelche Ideen dazu? – user1332723

+0

Ich habe den Beitrag bearbeitet. –

1

Verwenden Sie $ _GET super global, um die Werte von einer URL z.

$sessid = $_GET["SessionID"]; # Although this seems pointless 
           # when you can use session_id() 
$note = $_GET["Note"]; 
$status = $_GET["Status"]; 
$operator = $_GET["Operator"]; 

Eine bessere Möglichkeit, noch würde sein, die vorgefertigte Funktion in PHP zu verwenden, um eine URL zu analysieren:

$url = "http://mysite.com/index.php?" 
     ."SessionID=582506&[email protected];" 
     ."joe bloggs;111.111.111.111&Status=203&Operator="; 
$arrayOfURL = parse_url($url); # Returns an associative array of all URL components 
print_r($arrayOfURL); 

Referenzblatt für Dich: http://php.net/manual/en/function.parse-url.php

Wie zum Abwracken Wenn ein String in seine durch ein Trennzeichen getrennten Teile verwendet wird, verwenden Sie die Funktion explode ($ delimiter, $ stringToExplode). Tutorial zu diesem Thema: http://www.tizag.com/phpT/php-string-explode.php

+0

danke dafür - ich weiß, wie man jeden Wert bekommt - was ich kämpfe ist die Note in seine Bestandteile - E-Mail, Name, IP, Menge. irgendwelche Ideen dazu? – user1332723

+0

@ user1332723 aktualisiert meine Antwort für den zweiten Teil auf Ihre Frage – Ozzy

1
$notes = explode(';', $_GET['Note']); 
var_dump($notes); 

Ein Problem, das ich sehe, ist, dass Sie eine Menge in der Zeichenfolge haben behauptet, aber es gibt keine Menge in Ihrem expample url. Sie müssen die einzelnen Komponenten der Notiz positionsmäßig erreichen ($ notes [0], $ notes [1], etc.) oder Sie müssten etwas komplizierteres rollen, wenn diese Elemente in verschiedenen Positionen innerhalb der Note = stehen Parameter.

1

Wenn ich verstehe Ihre Frage richtig

$note = $_GET['note']; 
$arr = explode(";", $note); 

Und in $ arr Sie haben alle Ihre Attribute

0
$note = $_GET["Note"]; 
$notes = explode(";", $note); 

echo $notes[0]; // [email protected] 
echo $notes[1]; // joe bloggs 
echo $notes[2]; // 111.111.111.111 
0

Versuchen Sie folgendes:

<?php 
     function parseQueryString($str) 
     { 
      $op = array(); 
      $pairs = explode("&", $str); 
      foreach ($pairs as $pair) 
      { 
       list($k, $v) = array_map("urldecode", explode("=", $pair)); 
       $op[$k] = $v; 
      } 
      return $op; 
     } 

     $str = "SessionID=582506&[email protected];joe bloggs;111.111.111.111&Status=203"; 

     $p = parse_url($str); 
     $s = parseQueryString($p['path']); 

     print_r($s); 
?> 

Ausgang:

Array 
(
    [SessionID] => 582506 
    [Note] => [email protected];joe bloggs;111.111.111.111 
    [Status] => 203 
) 

Was die Note Variable:

<?php 
    $notes = explode(";", $s['Note']); 

    $email = $notes[0]; 
    $name = $notes[1]; 
    $ipaddress = $notes[2]; 
?> 
Verwandte Themen