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>"}'"

「予期しない ' エラー」を返さずに? 元の文字列を変更することは避けたいです。

4

4 に答える 4

3

ヒアドキュメント構文を使用して、すべての引用符と二重引用符を簡単にエスケープできます。

これがその構文です。 http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

ヒアドキュメント識別子の前にスペースを残さないように注意してください。

于 2013-10-17T19:02:17.933 に答える
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

</p>"}

于 2013-10-17T19:02:29.003 に答える
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

ヒアドキュメントが $variables を解析することに注意してください。それを望まない場合は、最初の 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
于 2013-10-17T19:03:26.680 に答える
0

escapeshellarg関数を使用して、完全にエスケープされることを保証します。

$arg = escapeshellarg('{"key":"$api_key","message":{"html":"<p><h1>Hello World</h1><\/p>"}');
$curl_command = "curl -A 'Curl/2.5' -d '.$arg;
于 2013-10-17T19:04:00.117 に答える