【问题标题】:Adding PHP code in HTML which is already in PHP? [duplicate]在已经在 PHP 中的 HTML 中添加 PHP 代码? [复制]
【发布时间】:2023-03-08 11:17:01
【问题描述】:

基本上,我想在 HTML 中添加一个 PHP 变量,该 HTML 已经被插入到一个常量中,该常量位于 PHP 代码中。这就是我的意思:(显然下面的这段代码是错误的,但想象一下我想在 iFrame 的 URL 中插入 $VARIABLE,例如)

<?php
$VARIABLE = 'example-sub-category';
const EXAMPLE = "<iframe src='http://example.com/$VARIABLE'></iframe>";
?>

在其中添加该变量的语法是什么?

提前致谢!

【问题讨论】:

  • 常量声明后不能修改。
  • 你在课堂上工作吗?如果没有,您应该使用define
  • 您将 Example 声明为 const,但您向其中添加了 $variable。 const 表示常量,不能更改。

标签: php html variables syntax


【解决方案1】:

这只是一个基本模板。 str_replace() 应该可以解决问题。

const EXAMPLE = "<iframe src='http://example.com/{{{VARIABLE}}}'></iframe>";
$variable = 'example-sub-category

$merged_content = str_replace('{{{variable}}}', $variable, EXAMPLE);

注意我使用{{{}}} 来表示插入。这不是 PHP 语法,但您会发现模板经常使用类似文本中不会出现的东西来表示占位符。

【讨论】:

    【解决方案2】:

    你试过了吗:

    <?php
        $VARIABLE = 'example-sub-category';
        const EXAMPLE = "<iframe src='http://example.com/".$VARIABLE."'></iframe>";
    ?>
    

    【讨论】:

    • 变量周围的引号不会干扰 iframe 之前的引号吗?在那种情况下,如果我只是在引号( \" )之前添加反斜杠就足够了吗?
    • 我认为您感到困惑。句号(句点)表示串联。在这种情况下,三个单独的字符串被连接成一个。双引号包含自己单独的字符串,因此变量周围没有引号,因为它们分别是第一个和第三个字符串的结尾和开头。
    • 好的,我明白了。但是,当我尝试您所说的时,它不起作用。你知道为什么会这样吗?在我的情况下,我在 URL 之外还有更多的引号,那么这会以任何方式干扰吗?
    • 不看代码本身就很难说。正如 Rujikin 指出的那样,在混合单引号和双引号时需要小心,尤其是变量。我建议使用实时语法检查器编写代码 - 我个人使用 NetBeans。
    【解决方案3】:

    只需定义标签&lt;?php ?&gt;,您就可以在 HTML 中的任何位置插入 PHP

    <iframe src='http://example.com/<?php echo $VARIABLE; ?>'></iframe>
    

    用你的例子:

    const EXAMPLE = "<iframe src='http://example.com/" . $VARIABLE . "'></iframe>";
    

    【讨论】:

    • 正如我对@verbumsapienti 所说:变量周围的引号不会干扰 iframe 之前的引号吗?在那种情况下,如果我只是在引号( \" )之前添加反斜杠就足够了吗?
    • 同类型引号相互干扰,不同类型不相互干扰。我通常对 php 使用 ' 标记,对 HTML 使用 " 。只要 HTML 使用与 PHP 不同的类型,就不会出现问题。在 PHP 中," 标记将处理变量,而 ' 不会处理变量。
    • 是的,转义引用也可以解决涉及相同引用的问题$string ='some test\'s';。使用 \ 基本上意味着“按字面意思解释,没有特殊含义”,或者至少我记得是这样。
    【解决方案4】:

    对于这种任务我最好使用 sprintf:

    $VARIABLE = 'example-sub-category';
    const EXAMPLE = "<iframe src='http://example.com/%s'></iframe>";
    
    echo sprintf(self::EXAMPLE, $VARIABLE);
    

    【讨论】:

    • echo sprintf() 是一个“反模式”。绝对没有任何理由让任何人出于任何原因在任何代码中编写 echo sprintf() —— 每次都应该是 printf() 而没有 echo
    【解决方案5】:

    要在 html 中移入和移出 php,请使用 &lt;? [此处的 php 代码...] 和 ?&gt; 结束 php 并继续使用 html。您可以使用反斜杠 \ 转义字符,并使用上面提到的 Rujikin 单引号。或者,在 PHP 中,您可以回显您的 html,这样您就不会跳入和跳出 php。

    例如:

    some php...
    echo '<span style=\"color:#980000\"><strong>\"{$searchTerm}\"</strong></span>';
    more php...
    

    请注意,html 用单引号(端到端)括起来,在单引号内,在 html 需要的地方使用双引号,例如,&lt;style&gt; 标记。

    这个例子基本上是在说,“无论 php 变量 $searchTerm 的值是什么,都将其放在 echo 所需的引号中,并将其设为深蓝色 (#0000FF) 和粗体 (&lt;strong&gt;)。

    我希望这会有所帮助。 :)

    【讨论】:

      【解决方案6】:

      你可以试试这样的:

      <?php
      $VARIABLE = 'example-sub-category';
      const EXAMPLE = "<iframe src='http://example.com/$VARIABLE'></iframe>";
      
      $newHtml = str_replace('$VARIABLE', $VARIABLE);
      ?>
      

      正如您提到的,您的代码是假的,所以我想您需要用在执行 php 脚本之前未知的内容替换 HTML 字符串中的某些地方,对吧?

      所以你需要放置一些占位符并稍后更改它们,正如我在上面的 sn-p 中所展示的那样。

      希望这可行

      【讨论】:

        猜你喜欢
        • 2020-11-20
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多