没有看到我可以使用的答案,所以我会问。
我有一个查询字符串,我已经通过在“&”上爆炸而分成了一组数值标志。所以,我现在有一个包含字符串的数组,如:
email=my_name@my_domain.com
name=Michael+D+Linear
name=Michael%20Linear
以及许多其他字符串。
我需要做的是搜索数组并找到“email”字符串和“name”字符串,并将实际的电子邮件地址放入一个新变量中,将第一个名称放入变量和姓氏变成一个变量。
不知道如何有效地做到这一点。
名称将始终以第一种或第二种方式显示 - 绝不会同时显示。因此,有一次查询字符串可能包含First + Middle + Last格式的名称(可能没有中间名,但名称的所有部分将用+符号而不是空格分隔)。其他时候,名称将使用%20符号替换空格。从来没有在同一个查询中。
如何搜索数组,查找电子邮件和名称字符串,然后将其提取到新变量?
感谢您的帮助。整个上午一直困扰着我的大脑。不太明白。
答案 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);
}