imagettftext \\ n换行拼图第2部分

时间:2012-03-29 13:26:47

标签: php imagettftext

我之前曾问过为什么字符串中的\ n没有返回换行符。

这是因为字符串需要在Double Quotes中。 (谢谢@Juhana!)

现在我正在使用GET,因此我可以更改URL中的文本字符串

$text = $_GET["msg"];

网址:

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

输出文本中的结果“Something \\ nEllse”
但我想要的是像这样的换行符:
“有事
否则“

为什么文本仍然有这两个反斜杠?
我错误地认为因为“msg”在Double Quotes中会产生换行符吗?

感谢

编辑完整的PHP代码

<?php
// Set the content-type

标题('Content-Type:image / 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);
?>

3 个答案:

答案 0 :(得分:1)

我认为magic_quotes在配置上是开启的。这就是为什么当有\这样的特殊字符(反斜杠)时自动添加斜杠。

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

但是如果要在实时应用程序中使用这些,则需要进行更多验证以避免 安全问题。如果您发送带有特殊字符或html标签的文本,请更好地使用POST方法或至少使用哈希代码并使用。你的网址:

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']);

答案 1 :(得分: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);
欢呼!

答案 2 :(得分:-2)

您是否尝试使用<br/>代替\n ??

http://php.net/nl2br

你在哪里输出文字?在HTML?

b.r。