0

我有一个文本字符串,它在变量中设置为如下值:

$str = 'type=showall'

或者

$str = 'type=showall&skip=20'
$str = 'type=showall&skip=40'
$str = 'type=showall&skip=60'

等等。

我需要检查字符串中是否存在“跳过”值,如果存在,则将其替换为存储在 $newSkip 变量中的新数字,并保持字符串相同,但跳过值的更改除外.

例如,如果字符串是:

$str = 'type=showall&skip=20'

$newSkip = 40

那么我希望这个被退回:

$str = 'type=showall&skip=40'

如果没有跳过值:

$str = 'type=showall'

$newSkip = 20

那么我希望这个被退回:

$str = 'type=showall&skip=20'

我对 PHP 还很陌生,所以仍然可以使用各种函数找到自己的方式,并且不确定在这种情况下哪个/s 是最好的,当您要查找的文本/值可能/可能不在字符串中时.

4

1 回答 1

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().

参考 -

于 2012-09-17T16:23:28.920 回答