在我对它们执行操作之前,我想要检查很多字符串是否为空。我不想手动对每个字符串执行此检查,因此我将其放在一个如下所示的函数中:
function format_field($field_name, $format) {
$value = get_field($field_name);
if ($value != "") {
return $format;
}
return "";
}
对此函数的调用如下所示:
format_field('website', "<p><strong>Website:</strong><a href=\"$value\">$value</a></p>");
我希望通过在传递给$value
的字符串中写format_field()
,$value
的值会在返回之前在函数中展开,但这并不是似乎是这样。
这是否可能,我出错了?
我也知道sprintf()
,但由于$value
可以在字符串中多次引用,因此它不太理想。
答案 0 :(得分:1)
您的代码存在的问题是,在将"<p><strong>Website:</strong><a href=\"$value\">$value</a></p>"
作为函数参数传递时,$value
变量以后不会在功能块中替换。
例如,如果您$value = 'https://a.b.c';
$format
的值变为"<p><strong>Website:</strong><a href=\"https://a.b.c\">https://a.b.c</a></p>"
您可以尝试的是替换占位符,例如
将"<p><strong>Website:</strong><a href=\"{value}\">{value}</a></p>"
作为$format
参数传递,然后使用类似的东西:
$format = "<p><strong>Website:</strong><a href=\"{value}\">{value}</a></p>";
$value = 'https://www.google.com';
echo preg_replace('#\{value\}#i', $value, $format);
实际返回:<p><strong>Website:</strong><a href="https://www.google.com">https://www.google.com</a></p>