扩展作为参数传递的字符串中的变量

时间:2017-08-10 11:01:25

标签: php

在我对它们执行操作之前,我想要检查很多字符串是否为空。我不想手动对每个字符串执行此检查,因此我将其放在一个如下所示的函数中:

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可以在字符串中多次引用,因此它不太理想。

1 个答案:

答案 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>