2012-06-13 2 views
1

Я пишу PHP-инфраструктуру прямо сейчас и столкнулся с проблемой форматирования.Как я могу оценить глубину HTML в PHP?

Мое намерение состоит в загрузке в виде нескольких файлов, скомпилировать их все вместе и выгнать их как соответствующий HTML-код. В этом процессе я намереваюсь отступать или выделяться, когда я продвигаюсь по строкам. Прямо сейчас, я использую комбинацию простых проверок для «<», «& lt /» и «/ & gt», (не мог использовать настоящий символ здесь) наряду с некоторыми синтаксическими анализами XML для достижения этого, но я уверен что есть лучший способ сделать это.

Сейчас мой код дает мне что-то вроде этого:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Your Sitename - Module - Index</title> 
    <link rel="stylesheet" href="layout/layout/default/css/styles.css" type="text/css" /> 
    <link rel="stylesheet" href="php/plugins/MoviePlayer/windows/IE/Silverlight/css/silverlight.css" type="text/css" /> 
     <script type="text/javascript" src="js/Cookies.js"></script> 
     <script type="text/javascript" src="js/GlobalReady.js"></script> 
     <script type="text/javascript" src="js/PluginDetection.js"></script> 
     <script type="text/javascript" src="js/Silverlight.js"></script> 
      <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script> 
      <script type="text/javascript" src="js/jquery.flow.1.2.js"></script> 
      <script type="text/javascript" src="layout/layout/default/js/LayoutInit.js"></script> 
      <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/SLPlayer.js"></script> 
       <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/wmvplayer.js"></script> 
      </head> 
       <body onLoad="javascript: GlobalReady();"> 
       <div id="container"> 
       <div id="header"> 
       </div> 
       </div> 
       </body> 
       </html> 

Который немного от того, что я пытаюсь достичь.

Я не специалист по регулярному выражению; или пользователь, и я предполагаю, что я мог бы достичь этого таким образом, но не знал бы, как это сделать.

Фактически, мой вопрос в том, что; как бы вы подошли к форматированию этого правильно (программно), если бы вы печатали его по одной строке за раз? Есть ли библиотека, которая могла бы идентифицировать все элементы в одной строке, независимо от их связи с более поздним элементом?

Если нет, то я уверен, что буду писать новый класс, чтобы справиться с этим самостоятельно.

Я пытаюсь добиться чего-то вроде этого:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Your Sitename - Module - Index</title> 
    <link rel="stylesheet" href="layout/layout/default/css/styles.css" type="text/css" /> 
    <link rel="stylesheet" href="php/plugins/MoviePlayer/windows/IE/Silverlight/css/silverlight.css" type="text/css" /> 
    <script type="text/javascript" src="js/Cookies.js"></script> 
    <script type="text/javascript" src="js/GlobalReady.js"></script> 
    <script type="text/javascript" src="js/PluginDetection.js"></script> 
    <script type="text/javascript" src="js/Silverlight.js"></script> 
    <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script> 
    <script type="text/javascript" src="js/jquery.flow.1.2.js"></script> 
    <script type="text/javascript" src="layout/layout/default/js/LayoutInit.js"></script> 
    <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/SLPlayer.js"></script> 
    <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/wmvplayer.js"></script> 
</head> 
<body> 
</body> 
</html> 

Благодаря загодя.

+0

Форматирует все сразу опцию? Если это так, я бы использовал HTML_TIDY. – alexn

+0

Как вы получаете такой код? Что это порождает? –

+0

Форматирование всего сразу не вариант, спасибо за вопрос. Прямо сейчас я запускаю свой «окончательный» вывод по строкам, и, столкнувшись с PHP внутри указанного контента, я все это собираю и оцениваю. Всякий раз, когда я печатаю внутри файла содержимого или нет, в настоящее время я ссылаюсь на метод «layout-> writeline», который отслеживает отступ; просто не так фантастично. – DigitalJedi805

ответ

2

Загрузите несколько файлов, соедините их в строку и используйте tidy, чтобы отформатировать их.

Однако, скорее всего, это проблема с кодом, генерирующим HTML, который должен быть исправлен вместо вывода неверного кода и последующего его исправления.

+0

Хотя это большое предложение; У меня есть возможность выполнить «литературу» в середине моего вывода, I.E.«Загрузите макет, вставьте содержимое, начните печать, оцените php внутри контента», и я хотел бы, чтобы этот код также был отформатирован; что означает, что я должен ссылаться на свою «Layout-> WriteLine» для всех методов записи (даже внутри моих файлов содержимого); что также означает, что он должен поддерживать текущую запись о том, как далеко я отступил, поэтому я сейчас ищу ключевые фразы. – DigitalJedi805

+0

@ DigitalJedi805: см. [Управление буфером вывода] (http://php.net/manual/en/book.outcontrol.php) –

+0

Возможно очень полезно. Спасибо, и мне придется экспериментировать с ним. – DigitalJedi805

Смежные вопросы