按原样创建包含混合引号的字符串变量

时间:2013-10-17 18:58:04

标签: php string

如何使用包含大量混合双引号和单引号的字符串:

curl -A 'Curl/2.5' -d '{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}'

并创建一个字符串变量,例如:

$curl_command = "curl -A 'Curl/2.5' -d '{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}'"

没有返回“意外”错误“?我想避免更改原始字符串。

4 个答案:

答案 0 :(得分:3)

您可以使用heredoc语法并轻松转义所有引号和双引号。

以下是它的语法。 http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

注意不要在heredoc标识符之前留空间。

答案 1 :(得分:1)

使用 HEREDOC 语法。

<?php
$api_key='xx2233';
$content=<<<EOD
curl -A 'Curl/2.5' -d '{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}'
EOD;

echo $curlCommand=$content;

输出:

  

curl -A'Curl / 2.5'-d'{“key”:“xx2233”,“message”:{“html”:“Hello World

     

&LT; / P&gt;“中}

答案 2 :(得分:1)

您可以使用Heredoc:

$string = <<<someStringYouWillAlsoNeedToStop
curl -A 'Curl/2.5' -d '{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}'
someStringYouWillAlsoNeedToStop; // this ends your string

请注意heredoc DOES会解析您的$变量。 如果你不想这样,你应该在第一个someStringYouWillNeedToStop周围使用单引号来使用Nowdoc:

$string = <<<'someStringYouWillAlsoNeedToStop'
curl -A 'Curl/2.5' -d '{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}'
someStringYouWillAlsoNeedToStop; // this ends your string

答案 3 :(得分:0)

使用escapeshellarg功能确保完全转义:

$arg = escapeshellarg('{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}');
$curl_command = "curl -A 'Curl/2.5' -d '.$arg;