0

以前、文字列の \n が改行を返さない理由を尋ねました。

これは、文字列を二重引用符で囲む必要があったためです。(ありがとう @Juhana !)

今は GET を使用しているので、URL のテキスト文字列を変更できます

$text = $_GET["msg"];

そしてURL:

http://www.mywebsite.co.uk/image.php?msg=Something\nElse

出力されるテキストは "Something\\nElse"
ですが、私が欲しいのは次のような改行です:
"Something
Else"

テキストにまだ 2 つのバックスラッシュがあるのはなぜですか?
「msg」が二重引用符で囲まれているため、改行を作成する必要があると考えるのは間違っていますか?

ありがとう

完全な PHP コードを編集

<?php
// Set the content-type

header('Content-Type: 画像/png');

// Create the image
$im = imagecreatetruecolor(400, 100); //image big enough to display two lines

// Create some colors
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw

//$text = 'Testing\ntesting'; using SINGLE quotes like this results \\n
//$text = "Testing\ntesting"; using DOUBLE quotes like this results in line break

$text = $_GET["msg"];

// Replace path by your own font path
$font = 'arial.ttf';


// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
4

3 に答える 3

1

magic_quotes設定でONになっていると思います。\そのため、 (バックスラッシュ)のような特殊文字がある場合、スラッシュが自動的に追加されます。

if(get_magic_quotes_gpc())
    $text = stripslashes($_GET['msg']);
else 
    $text = $_GET['msg'];

ただし、これらを実際のアプリケーションで使用する場合は、セキュリティの問題を回避するためにさらに検証が必要です。特殊文字または html タグを含むテキストを送信する場合は、POST メソッドを使用するか、少なくともハッシュ コードと revise を使用してください。あなたの URL:

http://url.com/image.php?msg=<?php echo base64_encode('your text\n test');>

そしてimage.phpで

$text = isset($_GET['msg']) ? $_GET['msg'] : 'default text';
$text = base64_decode($_GET['msg']);
于 2012-03-29T13:46:37.350 に答える
0

次のように PHP_EOL を使用します。

header('Content-Type: image/jpeg');
$im = imagecreatefromjpeg('000.jpg');
$text = "Hello my name is degar007".PHP_EOL."and I am glad to see you";
imagettftext($im, 10, 0, 100, 100, 0x000000, 'DejaVuSans.ttf', $text);
imageJpeg($im);
imagedestroy($im);

乾杯 !

于 2015-06-10T00:27:30.080 に答える
-2

<br/>代わりに使用しようとしました\nか?

http://php.net/nl2br

テキストはどこに出力されましたか?HTMLで?

gr

于 2012-03-29T13:36:56.840 に答える