我有一个文本字符串,在变量中设置为如下值:
$str = 'type=showall'
或
$str = 'type=showall&skip=20'
$str = 'type=showall&skip=40'
$str = 'type=showall&skip=60'
等等。
我需要检查字符串中是否存在“skip”值,如果是,则将其替换为存储在$ newSkip变量中的新数字,并保持字符串相同,但更改为跳过值。
例如,如果字符串是:
$str = 'type=showall&skip=20'
和
$newSkip = 40
然后我希望将其退回:
$str = 'type=showall&skip=40'
如果没有跳过值:
$str = 'type=showall'
和
$newSkip = 20
然后我希望将其退回:
$str = 'type=showall&skip=20'
我是PHP的新手,所以仍然找到我的方式使用各种功能,并且当你正在寻找的文本/值可能/可能不是时,不确定在这种情况下哪一个是最好的。在字符串中。
答案 0 :(得分:3)
PHP有一个名为parse_str()
的便捷函数,它接受类似于你拥有的字符串,并返回一个带键/值对的数组。然后,您就可以检查特定值并进行所需的更改。
$str = 'type=showall&skip=20';
// this will parse the string and place the key/value pairs into $arr
parse_str($str,$arr);
// check if specific key exists
if (isset($arr['skip'])){
//if you need to know if it was there you can do stuff here
}
//set the newSkip value regardless
$arr['skip'] = $newSkip;
echo http_build_query($arr);
http_build_query
函数会将数组返回到您开始使用的相同URI格式。此函数还对最终字符串进行编码,因此如果要查看已解码的版本,则必须通过urldecode()
发送。
参考文献 -