如何使用包含大量混合双引号和单引号的字符串:
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>"}'"
没有返回“意外”错误“?我想避免更改原始字符串。
答案 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;