2013-10-17 98 views
0

我如何可以採取一個字符串,有很多混合雙人和單引號的:創建一個字符串變量,是包含混合報價

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

我想在我的php文件中使用php $ variables在json部分中進行硬編碼。 – JMC

回答

3

您可以使用heredoc語法並輕鬆地轉義所有引號和雙引號。

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

注意不要在heredoc標識符之前留出空格。

+0

EOD和EOT有什麼區別? – JMC

+1

@JMC看到我的回答,你會明白......沒有區別。不要緊,你用什麼。你可以使用'EOD','EOT','blahblah',甚至'someStringYouWillAlsoNeedToStop' –

+0

謝謝我現在得到它。它們在手冊中的EOD和EOT之間切換,使其看起來有意義。 – JMC

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; 

OUTPUT:

捲曲-A '捲曲/ 2.5' -d「{ 「關鍵」: 「xx2233」, 「消息」:{ 「HTML」:」你好世界

</p>「}

1

您可以使用定界符:

$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會解析您的$變量。 如果你不希望出現這種情況,你應該使用Nowdoc通過圍繞第一someStringYouWillNeedToStop單引號:

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

+1用於闡述和包含Nowdoc信息 – JMC

0

使用escapeshellarg功能,以保證它的完全逃脫:

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