道歉,如果这是一个简单的问题和/或它是荒谬的。
我尝试做的是根据2个简单变量更改字符串的输出。
这是原始变量;
$src = 'http://example.org';
我有以下选项变量从Wordpress短代码中提取数据(如果存在);
$bg = $attr['background'];
$col = $attr['color'];
我想要实现的是,如果两个选项变量都没有值,则原始变量保持不变。
如果只存在一个选项变量,则原始变量的值变为;
http://example.org?background='.$bg.'
或
http://example.org?color='.$col.'
取决于哪一个有值。
如果两个选项变量都有值,则原始值需要变为;
http://example.org?background='.$bg.'&color='.$col.'
有人能指出我正确的方向吗?非常感谢。
答案 0 :(得分:1)
试试这个:
$src = 'http://example.org';
$start = '?';
if(isset($attr['background'])) {
$src .= $start . 'background=' . $attr['background'];
$start = '&';
}
if(isset($attr['color'])) $src .= $start . 'col=' . $attr['color'];
应该是不言自明的,但我们会慢慢建立$ src变量,具体取决于是否设置了背景或颜色。
答案 1 :(得分:1)
您可以使用WordPress内置的add_query_arg()
功能轻松完成此操作。
View Code
答案 2 :(得分:0)
这是一个小函数,可以在给定的参数数组中创建参数:
<?php
// the settings:
$attr = [];
$attr['background'] = "#ededed";
$attr['color'] = "red";
#$attr['otherparam'] = "123456";
$url = 'http://example.org';
// the method
function createParamsString($params) {
$p = [];
foreach($params as $key=>$value) {
$p[] = $key."=".urlencode($value);
}
return implode("&", $p);
}
// usage:
$paramsString = createParamsString($attr);
$url = !empty($paramsString) ? $url."?".$paramsString : $url;
echo $url;
这种方式是模块化的。您只需向$attr
添加条目就可以了。如果您的背景值为urlencode
,则#EDEDED
非常重要。