0

我需要从 URL 中提取一些值,然后使用这些值发送电子邮件。

多亏了这里其他人的帮助,我几乎搞定了。我遇到的问题是 url 附件看起来像这样

?SessionID=582506&Note=joe@bloggs.com;joe bloggs;111.111.111.111&Status=203&Operator= 

您可能已经注意到电子邮件地址、姓名、金额和 ip 地址都存储在 note 变量中,用分号分隔。

有没有办法解析注释值并从中提取数据(受分号限制)作为单独的数量,然后我可以在编译电子邮件时使用它们?

提前致谢

4

7 回答 7

5

Note参数中获取数据,然后在分号处拆分值(例如explode),您可以访问结果数组中值的每个部分。

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

$email = $note_parts[0];
$name = $note_parts[1];
$addr = $note_parts[2];
于 2012-04-14T21:10:22.250 回答
1

使用 $_GET 超级全局从 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:

$url = "http://mysite.com/index.php?"
       ."SessionID=582506&Note=joe@bloggs.com;"
       ."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

于 2012-04-14T21:12:16.370 回答
1
$notes = explode(';', $_GET['Note']);
var_dump($notes);

我看到的一个问题是您声称在字符串中有金额,但您的示例网址中没有金额。您必须按位置获取 Note 的各个组件($notes[0]、$notes[1] 等),或者如果这些项目可以位于 Note= 内的不同位置,则您必须滚动一些更复杂的东西范围。

于 2012-04-14T21:15:10.480 回答
1

如果我正确理解你的问题

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

在 $arr 你有你所有的属性

于 2012-04-14T21:15:31.967 回答
0

您可以使用分解和列表。为全球$_GET['Note'];

<?php

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

如果你想直接解析 url parse_str 会帮助你。

<?php
    parse_str("SessionID=582506&Note=joe@bloggs.com;joe bloggs;111.111.111.111&Status=203&Operator=",$array);
    var_dump($array);
/*
array(4) {
  ["SessionID"]=>
  string(6) "582506"
  ["Note"]=>
  string(41) "joe@bloggs.com;joe bloggs;111.111.111.111"
  ["Status"]=>
  string(3) "203"
  ["Operator"]=>
  string(0) ""
}*/
于 2012-04-14T21:11:38.540 回答
0
$note  = $_GET["Note"];
$notes = explode(";", $note);

echo $notes[0]; // joe@bloggs.com
echo $notes[1]; // joe bloggs
echo $notes[2]; // 111.111.111.111
于 2012-04-14T21:16:08.253 回答
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&Note=joe@bloggs.com;joe bloggs;111.111.111.111&Status=203";

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

        print_r($s);
?>

输出 :

Array
(
    [SessionID] => 582506
    [Note] => joe@bloggs.com;joe bloggs;111.111.111.111
    [Status] => 203
)

至于Note变量:

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

     $email = $notes[0];
     $name = $notes[1];
     $ipaddress = $notes[2];
?>
于 2012-04-14T21:17:18.660 回答