Как удалить возврат каретки в HTML с помощью PHP? - PullRequest
0 голосов
/ 03 июня 2009

Я использую функцию javascript, которая получает HTML-код, который был включен с помощью php. Это не html в строке php, а html файл с расширением .php.

Поскольку html-код отправляется в качестве параметра функции js, он не может содержать возврат каретки. Проблема в том, что писать большие блоки html в одной строке ужасно, я хотел бы иметь функцию только для удаления возврата каретки перед отправкой содержимого.

Есть ли источник для такой функции?

Спасибо!

Ответы [ 5 ]

6 голосов
/ 03 июня 2009

простой

echo str_replace(array("\r\n", "\r", "\n"), null, $htmlCode);
1 голос
/ 03 июня 2009

Когда вы говорите «в файле PHP», я предполагаю, что вы имеете в виду include() файл, который выглядит примерно так:

<html>
  <head><title>Foo</title></head>
  <body>
    <?php do_stuff(); ?>
  </body>
</html>

В этом случае то, что вы ищете, называется Управление выводом , которое позволяет вам либо запретить отправку данных, пока вы не будете готовы, либо захватить их в строку для дополнительной обработки. Чтобы удалить возврат каретки из включенного файла, вы можете сделать это:

<?php

ob_start();                       // start buffering output
include("foo.php");               // include your file
$foo = ob_get_contents();         // get a copy of the buffer's contents
ob_clean_end();                   // discard the buffer and turn off buffering
echo str_replace("\r", "", $foo); // print output w/o carriage returns

Если вы также хотите удалить переводы строки, измените эту последнюю строку на:

echo str_replace(array("\n", "\r"), "", $foo);
1 голос
/ 03 июня 2009

под «сборкой в ​​PHP» я предполагаю, что вы имеете в виду, что вы создаете строку, которая содержит соответствующий HTML.

Если это так, то просто не возвращать карету как часть вашей строки.

т.е. не делайте этого:

foo =  "  this is my string
         and I have it on two lines"; 

а лучше сделай это

foo = "" .
      " this is my string" .
      " and it's on one line ";

Конечно, вы можете использовать функцию string.replace, но сборка через concats означает, что вы можете пропустить этот шаг.

0 голосов
/ 03 июня 2009

Рассмотрите возможность использования XML Writer для этого, если это то, что анализирует ваш javascript. Таким образом, результат всегда будет действительным, и код должен стать чище.

0 голосов
/ 03 июня 2009
...