【问题标题】:Replace text string with PHP session variable using PHP or Javascript使用 PHP 或 Javascript 将文本字符串替换为 PHP 会话变量
【发布时间】: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


【解决方案1】:

更改 foreach 循环:

foreach ($icons as $ic) { 
    echo str_replace('{{EMP_NO}}', $_SESSION['EmpNo'], $ic['url']) . ' '; 
}

【讨论】:

    【解决方案2】:

    试试这个代码

    <a href="http://www.adomain.com/links.php?EmpNo=<?= $_SESSION['EmpNo']; ?>">LINK</a>
    

    【讨论】:

    • 这不起作用,因为 href 是从数据库中写出的。写完后我需要对其进行操作
    • 也许这应该有所帮助。当您从数据库中编写 href 时使用它
    • @RoccoTheTaco:然后在您从数据库中获取的值上使用str_replace()你输出到页面之前。
    • @David 我更新了这个问题,因为这很有意义,但仍然需要一些帮助。请查看。
    • 在 foreach 循环中改变这个: foreach ($icons as $ic) { echo str_replace('{{EMP_NO}}', $_SESSION['EmpNo'], $ic['url'] ) . ' '; }
    【解决方案3】:

    That's not how you use str_replace().您忘记了第三个函数参数,即您要在其中搜索某些内容并将其替换为其他内容的整个字符串。

    那么那个字符串在哪里呢?好像就在这里:

    echo $ic['url'] . ' ';
    

    这就是你要替换的:

    echo str_replace('{{EMP_NO}}', $_SESSION['EmpNo'], $ic['url']) . ' ';
    

    无论您在何处输出或以其他方式可以操作包含此链接的字符串值,您都可以在其中替换其内容。

    【讨论】:

    • 这解决了它:foreach 循环:foreach ($icons as $ic) { echo str_replace('{{EMP_NO}}', $_SESSION['EmpNo'], $ic['url'] ) . ' '; }
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2016-06-13
    • 2014-06-12
    相关资源
    最近更新 更多