imagettftext \\ n головоломка разрыва строки ЧАСТЬ 2 - PullRequest
0 голосов
/ 29 марта 2012

Ранее я спрашивал, почему \ n в строке не возвращает разрыв строки.

Это потому, что строка должна быть в двойных кавычках. (Спасибо @Juhana!)

Теперь я использую GET, чтобы я мог изменить текстовую строку в URL

$text = $_GET["msg"];

И URL:

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

В результате выводится текст "Something \\ nElse"
Но я хочу вот такой разрыв строки:
«Что-то
Остальное "

Как получилось, что в тексте остались эти две обратные косые черты?
Я ошибаюсь, думая, что, поскольку "msg" находится в двойных кавычках, это должно создать разрыв строки?

спасибо

РЕДАКТИРОВАТЬ полный код PHP

<?php
// Set the content-type

header ('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 ]

1 голос
/ 29 марта 2012

Я думаю, magic_quotes включены в конфигурации. Вот почему добавляется автоматическая косая черта, когда есть специальный символ, такой как \ (обратная косая черта).

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

Но если вы собираетесь использовать их в реальном времени, вам нужно больше проверок, чтобы избежать проблемы с безопасностью. Если вы отправляете текст со специальными символами или тегами html, лучше используйте метод POST или хотя бы хеш-код и откройте для себя. Ваш 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']);
0 голосов
/ 10 июня 2015

использовать 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);

ура!

0 голосов
/ 29 марта 2012

вы пытались использовать <br/> вместо \n ??

http://php.net/nl2br

где вы выводили текст?в html?

гр

...