2

没有看到我可以使用的答案,所以我要问。

我有一个查询字符串,我通过在“&”符号上爆炸将其分解为一组值。所以,我现在有一个包含字符串的数组,例如:

email=my_name@my_domain.com
name=Michael+D+Linear
name=Michael%20Linear

以及许多其他字符串。

我需要做的是搜索数组并找到“电子邮件”字符串和“名称”字符串,并将实际的电子邮件地址放入一个新变量中,将名字放入一个变量中,将姓氏放入一个变量中.

不知道如何有效地做到这一点。

该名称将始终以第一种或第二种方式显示 - 永远不会同时显示。因此,有一次查询字符串可能包含 First+Middle+Last 格式的名称(可能没有中间名,但名称的所有部分将用 + 号而不是空格分隔)。其他时候,名称中的空格将替换为 %20 符号。永远不要在同一个查询中。

如何搜索数组,找到电子邮件和姓名字符串,然后将它们提取到新变量中?

感谢您的任何帮助。整个上午都在为此绞尽脑汁。完全搞不定。

4

3 回答 3

2

简单地在字符周围再次爆炸=将允许您循环并检查变量名称。

例子 :

foreach($q as $item) {
  $keyval = explode('=', $item);
  switch($keyval[0]) {
    case 'name':
      // Do something, $keyval[1] is the value part
      $name = urldecode($keyval[1]);
      break;
    case 'email':

      break;
  }
}

注意:+%20字符使用该urldecode()函数替换为空格。

于 2013-05-02T11:17:59.320 回答
2

当然,您可以重新发明轮子,但您显然正在使用查询字符串:

<?php
  $str = 'email=my_name@my_domain.com&name=Michael%20Linear';

  parse_str($str, $arr);
  print_r($arr);

输出:

Array
(
    [email] => my_name@my_domain.com
    [name] => Michael Linear
)
于 2013-05-02T11:22:49.007 回答
0

尝试使用 str_replace() 将字符串替换为数组索引值

echo $email =str_replace('email=', '','email=my_name@my_domain.com');
 if(strpos('name=Michael+D+Linear', '+') !== false) {
 $f = str_replace('name=', '','name=Michael+D+Linear');
echo $fname = str_replace('+', ' ',$f);
}
 if(strpos('name=Michael%20Linear', '%20') !== false) {
 $g =str_replace('name=', '','name=Michael%20Linear');
echo $name = str_replace('%20', ' ',$g);
}
于 2013-05-02T11:40:15.020 回答