从PHP数组中提取字符串

时间:2013-05-02 11:15:00

标签: php string

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

我有一个查询字符串,我已经通过在“&”上爆炸而分成了一组数值标志。所以,我现在有一个包含字符串的数组,如:

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

以及许多其他字符串。

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

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

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

如何搜索数组,查找电子邮件和名称字符串,然后将其提取到新变量?

感谢您的帮助。整个上午一直困扰着我的大脑。不太明白。

3 个答案:

答案 0 :(得分: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;
  }
}

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

答案 1 :(得分: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
)

答案 2 :(得分:0)

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

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