【发布时间】:2017-12-01 22:25:07
【问题描述】:
我有一个文本字符串,它是 PHP 页面上 URL 的一部分,如下所示:。
<a href="http://www.adomain.com/links.php?EmpNo={{EMP_NO}}">LINK</a>
我需要将 {{EMP_NO}} 替换为我创建的会话变量$SESSION['EmpNo']
href 由一个 PHP 函数填充,该函数查询数据库并根据用户 ID 写入 href 链接。
function get_user_icons($user_id)
{
$icons = array();
$user_id = mysql_real_escape_string($user_id);
$sql = "SELECT ic.* "
. "FROM gbl_empicons AS em "
. "LEFT JOIN gbl_icons AS ic ON em.IconId = ic.id "
. "WHERE em.EmpNo = '$user_id' ORDER BY em.IconId";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($res))
{
$icons[] = $row;
}
return $icons;
}
后来实际的链接是这样写出来的:
$icons = get_user_icons($row_WAATKgblqemplisting['EmpNo']);
foreach ($icons as $ic)
{
echo $ic['url'] . ' ';
}
我尝试使用 str_replace 更新此函数,但在这两个位置都没有运气。
str_replace('{{EMP_NO}}', $_SESSION['EmpNo']);
这不起作用。我也尝试使用 em.EmpNo 无济于事。实现此结果的最佳方法是什么?
【问题讨论】:
-
你是如何将该字符串输入
$linkString的? -
我不是,我更新了。我基本上想用会话替换页面上找到的 {{EMP_NO}} 的任何实例。
-
不要只是隐藏变量大声笑,现在 str_replace 将不起作用,并且会导致人们认为这是问题所在。
-
@RoccoTheTaco:
str_replace不会搜索页面的所有原始输出。什么都没有。除非您使用某种模板引擎(正如{{placeholder}}语法所暗示的那样),否则您需要做的是在需要的地方输出值。就像下面发布的答案一样:stackoverflow.com/a/47580611/328193 -
似乎是 XY 问题,您必须从某处输出 html。无论是从数据库中还是在回显或视图之前的最后,您总会有可以 str_replace 或更糟地使用缓冲的地方。 3v4l.org/LJR81
标签: php