标签: heredoc

在HTML按钮上回显PHP数组值的JavaScript警报?

我正在尝试使用PHP在股票交易游戏中回显一组按钮(买入和卖出).这些按钮最终会有一个onclick =事件处理程序,它调用一个JavaScript函数来填充表单上的某些字段,但我只是试图获得一个带有一个数据的alert().我无法从echo语句中获取结果以正确打印警报,因此它甚至不会触发.我还使用了print_r($ stockInfo)来确保我的数组正确地填充了测试数据.

这是我的数组:

$stockInfo = array(
    array('name' => 'Company 1', 'description' => 'Description 1', 'price' => '100', 'yield' => '.05'),
    array('name' => 'Company 2', 'description' => 'Description 2', 'price' => '89', 'yield' => '.06'),
    array('name' => 'Company 3', 'description' => 'Description 3', 'price' => '110', 'yield' => '.03')
);
Run Code Online (Sandbox Code Playgroud)

我的PHP代码试图生成一个按钮:

<?php
echo <<<EOT
    <button id="buy" class="btn btn-primary btn-small" onclick="alert('$stockInfo[0]["name"]');">Buy</button>
EOT;
?>
Run Code Online (Sandbox Code Playgroud)

该代码的结果是:

<button id="buy" class="btn btn-primary btn-small" onclick="alert('Array["name"]');">Buy</button>
Run Code Online (Sandbox Code Playgroud)

我只是想不通为什么我甚至无法得到一个简单的警报.运行:

echo $stockInfo[0]["name"];
Run Code Online (Sandbox Code Playgroud)

正确打印出"公司1",但它不会在alert()的参数中打印该文本.

我读过Stackoverflow,很多网页文章,并在过去的一天进行了实验,我无法弄清楚这一点.如果有人能提供任何帮助,我会非常感激.

谢谢!

javascript php alert heredoc echo

4
推荐指数
1
解决办法
3598
查看次数

PHP heredoc语法

我想知道是否:

$foo = <<< EOT
Hello, World!
EOT;
Run Code Online (Sandbox Code Playgroud)

和...一样有效

$foo = <<<EOT
Hello, World!
EOT;
Run Code Online (Sandbox Code Playgroud)

特别是在所有版本的PHP(或者只是最新的版本)中是否都适用.

我想知道因为我想知道<<<第一个EOT标识符之间的空格是否在语法上有效.例如,我的PHP解释器5.3.10正确运行,但是如果在<<<和之间有空格EOT(EOT标识符用白色而不是紫色标记),我的文本编辑器不会以相同的方式突出显示heredoc .

那么这里的交易是什么?在所有版本的PHP中是否合法?

php heredoc

4
推荐指数
1
解决办法
1万
查看次数

PHP eval和heredoc不能很好地发挥

可能重复:
带有eval代码执行的heredoc

所以我在function.php中有以下内容:

eval("\$content = <<<TEMPLATE\n
               asdf
\nTEMPLATE;");
Run Code Online (Sandbox Code Playgroud)

我一直收到错误说:

Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_END_HEREDOC or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in /var/www/function.php(10) : eval()'d code on line 5
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚问题是什么.heredoc语法显然有一个结局,heredoc是不是喜欢和eval一起玩?

php eval heredoc

4
推荐指数
1
解决办法
612
查看次数

如何将星号传递到bash heredoc?

我在bash shell中执行带星号的MySQL语句:

query=`cat <<EndOfMySQL
INSERT tmp_table
SELECT * FROM table
;
EndOfMySQL
`

echo $query

echo $query | mysql database
Run Code Online (Sandbox Code Playgroud)

问题是星号被当前目录中的文件列表替换,并且查询变得错误。如何避免这种行为?我使用反引号还是都没关系$()。我希望有一些转义序列,例如\*,但至少这是行不通的。

mysql bash glob heredoc

4
推荐指数
1
解决办法
1762
查看次数

如何在PHP Heredoc语法中显示数组元素或对象属性的值

我在heredoc输入字段中显示数组值时遇到问题.这是一段代码:

class Snippet{
  protected $_user;
  protected $_class;
  protected $_messages;

  public function __construct(){
    $this->_user = $this->_class = NULL;
    $this->createUser();
  }

  public function createUser(){
    $keys = array('user_login','user_email');
    $this->_user = $this->_class = array_fill_keys($keys, '');
  }

  public function userErrors(){
    //by default give the login field autofocus
    $_class['user_login'] = 'autofocus';
  }


  public function getForm(){

  return <<<HTML
<form id='test' action='' method='post'>
$this->_messages    
  <fieldset>
    <legend>Testing Heredoc</legend>
    <ol>
      <li>
        <label for='user_login'>Username</label>
        <input  id='user_login' name='user_login' type='text' placeholder='Login name' value=$this->_user[user_login] $this->_class[user_login]>
      </li>
    </ol>
  </fieldset>
</form>
HTML;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的输出产生一个带标签的输入框,其值显示为Array[user_login] …

php arrays object heredoc

4
推荐指数
1
解决办法
1902
查看次数

INSERT INTO SQL Heredoc正确的语法

我正在尝试将带有INSERT INTO MySQL命令的heredoc语法用于数据库.

我面临的问题是变量$tPerson_SQLinsert,这是一个查询.

这是我的代码:

$tPerson_SQLinsert = <<<SQL
    INSERT INTO tPerson (Salutation, FirstName, LastName, Tel, companyID)
    VALUES ("$Salutation", "$FirstName", "$LastName", "$Tel", "$companyID")
    SQL;
Run Code Online (Sandbox Code Playgroud)

好吧,这个语法可能有问题.

因为我得到了这个Parse错误:

 Parse error: syntax error, unexpected end of file in F:\wamp\www\forms\personInsert.php on line 83
Run Code Online (Sandbox Code Playgroud)

这只是php的结束标记?>.

heredoc的正确语法是什么?

谢谢.

php mysql heredoc

4
推荐指数
1
解决办法
5483
查看次数

PHP解析heredoc中的JavaScript内容

<?php
$javascript = <<<EOT
<script type="text/javascript">
function test () {
    return 'test test test \n test test test';
}
</script>
EOT;

echo $javascript;
?>
Run Code Online (Sandbox Code Playgroud)

上面的\n由PHP解析为换行符,生成如下的HTML源代码

    return 'test test test 
 test test test';
Run Code Online (Sandbox Code Playgroud)

这会导致JavaScript语法错误:未终止的字符串文字.


我有很多JavaScript代码,所以我不想把它们包装起来

$javascript = "<script type=\"text/javascript\">\nfunction test()...\n";
Run Code Online (Sandbox Code Playgroud)

实际上JavaScript代码没有直接回显到页面,它被传递给另一个函数,这就是为什么我需要一个PHP变量.


那么如何定义一个包含大量JavaScript代码导致问题的PHP变量呢?

有没有像if/endif这样的方法?

<?php if (condition): ?>
html code...
<?php endif ?> 
Run Code Online (Sandbox Code Playgroud)

html javascript php variables heredoc

4
推荐指数
1
解决办法
3441
查看次数

Bash尝试在heredoc中执行命令

我正在尝试编写一个简单的bash脚本,将多行输出打印到另一个文件.我是通过heredoc格式来做的:

#!/bin/sh

echo "Hello!"
cat <<EOF > ~/Desktop/what.txt
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
EOF
Run Code Online (Sandbox Code Playgroud)

我期待在桌面上看到包含以下内容的文件:

a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
Run Code Online (Sandbox Code Playgroud)

但相反,我看到这些作为我的what.txt文件的内容:

a=
b=
Run Code Online (Sandbox Code Playgroud)

不知何故,即使它是a的一部分heredoc,bash也试图逐行执行它.如何防止这种情况,并将内容按原样打印到文件中?

linux macos bash shell heredoc

4
推荐指数
1
解决办法
2723
查看次数

在后台运行heredoc格式化脚本?

我想知道是否有任何方法可以在后台以heredoc格式运行脚本?

#!/bin/bash

python <<EOF
import time
time.sleep(2)
print "AAA"
EOF  # placing "&" here doesn't work

echo "Hello"
Run Code Online (Sandbox Code Playgroud)

我知道我可以将它写入文件然后运行它,python foo.py &但这不是问题的关键.

linux bash heredoc

4
推荐指数
1
解决办法
551
查看次数

Bash中Heredoc的输入语法

我目前正在通过Ubuntu 16的终端学习Unix bash。我正在编写一个简单的脚本,因此我可以练习为Unix编写代码。这是代码示例:

report_uptime(){
cat << _EOF_
    <H2>System Uptime</H2>
    <PRE>$(uptime)</PRE>
    _EOF_
return
}
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用,原因是因为在cat之后,我应该使用<<-而不是<<。有时<<有效。那么,我什么<<时候应该使用<<-?什么时候应该使用?

这有效:

report_uptime(){
cat <<- _EOF_
    <H2>System Uptime</H2>
    <PRE>$(uptime)</PRE>
    _EOF_
return
}
Run Code Online (Sandbox Code Playgroud)

unix bash heredoc

4
推荐指数
2
解决办法
641
查看次数

标签 统计

heredoc ×10

php ×6

bash ×4

javascript ×2

linux ×2

mysql ×2

alert ×1

arrays ×1

echo ×1

eval ×1

glob ×1

html ×1

macos ×1

object ×1

shell ×1

unix ×1

variables ×1