我之前曾问过为什么字符串中的\ 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);
?>
答案 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)