tda*_*ers 51

这是heredoc语法.你可以通过<<<加上你选择的一个令牌来启动一个heredoc字符串,并通过在新行上只放置令牌(没有别的!)来终止它.为方便起见,有一个例外:允许在结束分隔符后添加单个分号.

例:

echo <<<HEREDOC
This is a heredoc string.

Newlines and everything else is preserved.
HEREDOC;
Run Code Online (Sandbox Code Playgroud)

  • 这和普通字符串有什么区别?为什么不做"回声"这是一个heredoc ....."` (4认同)
  • @Imray就我记忆而言,你可以将单引号和双引号放入heredoc以及变量中,一切都会起作用.如果你想在`echo`语句中使用双引号,你必须转义它们.不过,我开始后不久就停止使用heredoc了,因为我不喜欢打破它的缩进模式.现在我将我的许多字符串形成为数组,我后来将其内爆("\n",$ string_array)`. (2认同)

Pek*_*ica 16

它是使用HEREDOC语法的字符串的开头.

分隔字符串的第三种方法是heredoc语法:<<<.

在此运算符之后,提供标识符,然后提供换行符.字符串本身跟随,然后再次使用相同的标识符来关闭引号.

  • @Gabriel它允许你在字符串中使用两种引用而不会破坏它:`<<< END Hello"$ name"!今天'$配偶'怎么样?但是,屁股的一个巨大痛苦是,"END"标记不能缩进,因此Heredoc内容通常会破坏代码的缩进.它确实不是PHP最重要的功能之一:) (7认同)

hac*_*ist 13

这被称为heredoc,它可以让你做一段长达几行的文本.您可以将PHP变量放在那里,它们将替换为值.CHART这个词可以是任何东西.它只需要相同即可开始和停止引用文本开始的位置.

您可以通过附加多个带引号的字符串来执行相同的操作,但是对于像此HTML文本这样的扩展文档,这在大多数情况下都更干净.还有一种叫做nowdoc的东西就像PHP中的单引号字符串,但这些不允许你在它们中使用变量.


cod*_*ict 9

这是PHP的heredoc.

例:

$sql = <<<MySQL_QUERY
SELECT * 
FROM TAB 
WHERE A = 1 AND B = 2 
MySQL_QUERY;           
Run Code Online (Sandbox Code Playgroud)


Fed*_*Baù 7

我发现两者HeredocNowdoc非常强大和有用PHP,令我惊讶的是,到目前为止没有人给出更多的例子来说明你可以做什么。

Heredoc首先和之间的区别Nowdoc很简单,

  • Heredoc: 就像“”双引号字符串一样,你可以把变量
  • Nowdoc: 就像 '' 单引号字符串没有变量被解析

对于下面的示例,我将仅显示Heredoc, 以便将 Nowdoc令牌括在单引号内 -> 'TOKEN'。

特点与优势

  • "" 和 '' 可以根据需要添加,不会导致任何错误
  • 轻松输出带有动态变量的 HTML 代码,避免使用连接。
  • 将其存储在变量中以供字母使用,可以创建小组件并直接输出它们。
  • 这些行按字面意思解释为 '\n' 因此就像在文档中写入一样,使用
    nl2br 添加也很有用。

简单的例子

$a = "Hello";
$b = "World";
// HEREDOC
echo <<<HEREDOC
<strong> HEREDOC:  </strong> 
Variable A: "$a" 
Variable B: "$b"
HEREDOC;
echo '</br>';

// NOWDOC
echo <<<'NOWDOC'
<strong> NOWDOC:  </strong> 
Variable A: "$a" 
Variable B: "$b"
NOWDOC;
Run Code Online (Sandbox Code Playgroud)

输出

HEREDOC: Variable A: "Hello" Variable B: "World"
NOWDOC: Variable A: "$a" Variable B: "$b"
Run Code Online (Sandbox Code Playgroud)

食谱

  1. <br>使用 nl2br为每行添加

这是有效的,因为 HEREDOC 将每个 \n 解释为实际行

   // HEREDOC
    echo nl2br(<<<HEREDOC
    <strong> HEREDOC:  </strong> 
    Variable A: "$a" 
    Variable B: "$b"
    HEREDOC);
    // Output HEREDOC:
    //Variable A: "Hello"
    //Variable B: "World"
Run Code Online (Sandbox Code Playgroud)
  1. 创建小组件

         <?php
             foreach($tasks  as $task) {
                 // Create an HTML like component
                 $component = <<<HEREDOC
                 <div class="pure-u-1-3">
                     <div class="card">
                         <div class="card-header">
                            {$task['name']}
                         </div>
                         <div class="card-body">
                             <h5 class="card-title"> {$task['state']} </h5>
                             <p class="card-text"> {$task['description']} </p>
                             <a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
                         </div>
                     </div>                    
                 </div>
                 HEREDOC;
                 echo $component; // Output
    
             }
    
         ?>
    
    Run Code Online (Sandbox Code Playgroud)

或者只输入一个字符串然后输出 1 个 echo

    <?php
        $taskRendered = '';
        foreach($tasks  as $task) {
            // Create an HTML like component
            $component = <<<HEREDOC
            <div class="pure-u-1-3">
                <div class="card">
                    <div class="card-header">
                       {$task['name']}
                    </div>
                    <div class="card-body">
                        <h5 class="card-title"> {$task['state']} </h5>
                        <p class="card-text"> {$task['description']} </p>
                        <a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
                    </div>
                </div>                    
            </div>
            HEREDOC;
            $taskRendered .= $component;
        }
        echo $taskRendered; // Output
    
    ?>
Run Code Online (Sandbox Code Playgroud)

文档


Rus*_*ias 5

这是heredoc语法.

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
Run Code Online (Sandbox Code Playgroud)


aja*_*n81 5

这是一个heredoc,对于长串,你不必担心引号和诸如此类的东西.如果您注意到单词CHART,然后有一行显示CHART;,则表示字符串的结尾.

使用这种格式时要记住的重要事项是,无论使用什么字符串来定义字符串的结尾(例如在这种情况下为CHART),该字必须单独出现在一行上,后跟分号,并且不字符可以出现在同一行上的分号后,甚至是空格,否则PHP认为它是字符串的一部分.