2012-04-14 34 views
0

我需要從URL中提取一些值,然後使用這些值發送電子郵件。解析字符串以提取php中的值

感謝這裏的其他人的幫助,我幾乎已經釘上了它。我有是問題是,該URL附屬物這個樣子

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

正如你可能已經注意到都存儲在說明變量的電子郵件地址,名稱,數量和IP地址,用分號隔開。

有沒有辦法解析音符值並從中提取數據(受限於分號)作爲單獨的數量,然後我可以在編譯電子郵件時使用它們?

預先感謝

回答

5

獲得從所述Note參數的數據,則在分號(用例如explode)分裂值和可以達到所得到的數組中的值的每個部分。

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

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

您可以使用爆炸和列表。全球$_GET['Note'];

<?php 

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

,如果你想解析URL直接 parse_str會幫助你。

<?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

感謝 - 我知道如何讓每個值 - 電子郵件,名字 - 我所用是向下分離的說明成其組成部分掙扎,ip,金額。有關於此的任何想法? – user1332723 2012-04-14 21:16:53

+0

我編輯了這篇文章。 – 2012-04-14 21:18:44

1

使用$ _GET super global從URL中檢索值,例如,

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

仍然是一個更好的辦法,是使用預構建的功能在PHP解析一個網址:

$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); 

參考表給你: http://php.net/manual/en/function.parse-url.php

至於分手一個字符串放入由分隔符分隔的部分中,使用explode($ delimiter,$ stringToExplode)函數。 教程在此:http://www.tizag.com/phpT/php-string-explode.php

+0

感謝你 - 我知道如何獲得每個價值 - 我正在努力的是將筆記分成組成部分 - 電子郵件,姓名,IP,金額。有關於此的任何想法? – user1332723 2012-04-14 21:16:05

+0

@ user1332723更新了我對你問題第二部分的回答 – Ozzy 2012-04-14 21:26:56

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

一個問題我看到的是,你自稱有串的量,但在你的expample網址沒有量。您必須在位置上($ notes [0],$ notes [1]等)查看註釋的各個組件,否則如果這些項目可能位於註釋中的不同位置,參數。

1

如果我明白你的問題正確

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

而且在$ ARR你有你的所有屬性

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

試試這個:

<?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); 
?> 

輸出:

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

對於Note變量:

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

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