Перейти к содержимому

Как html перевести в php

  • автор:

PHP и HTML

PHP и HTML тесно взаимодействуют: PHP может генерировать HTML, а HTML может передавать информацию PHP. Перед чтением вопросов в этом разделе важно чтобы вы понимали как получать переменные извне PHP. Страницы руководства по этой теме содержат много примеров.

  1. Какое кодирование/декодирование я должен выполнять при передаче значения через форму/URL?
  2. Я пытаюсь использовать , но переменные $foo.x и $foo.y недоступны. $_GET[‘foo.x’] тоже не существует. Где они?
  3. Как создать массивы в HTML ?
  4. Как получить все результаты из HTML-тега select с атрибутом multiple?
  5. Как я могу передать переменную из JavaScript в PHP?

Какое кодирование/декодирование я должен выполнять при передаче значения через форму/URL?

  • Интерпретация HTML. Для того, чтобы задать произвольную строку, вы должны заключить её в двойные кавычки и использовать htmlspecialchars() для кодирования.
  • URL: URL состоит из нескольких частей. Если вы хотите чтобы ваши данные были восприняты как один элемент, вы должны закодировать их с помощью urlencode() .

Пример #1 Скрытый элемент HTML-формы

echo ‘. htmlspecialchars ( $data ) . ‘» />’ . «\n» ;
?>

Замечание: Использовать urlencode() для $data неправильно, так как кодировать данные в urlencode() это обязанность браузера. Все популярные браузеры делают это правильно. Отметьте, что это происходит вне зависимости от метода (например, GET или POST). Вы заметите это только в случае GET-запроса, так как POST-запросы обычно скрыты.

Пример #2 Данные, редактируемые пользователем

echo «» ;
?>

Замечание: Данные показываются браузером как предполагается, потому что браузер будет интерпретировать экранированные HTML-символы. При отправке через GET или POST данные будут закодированы (urlencoded) браузером для передачи и декодированы (urldecoded) PHP. Поэтому вам не надо выполнять какое-либо кодирование/декодирование url самостоятельно, всё обрабатываются автоматически.

Пример #3 В URL

Замечание: На самом деле вы подделываете HTML GET-запросом, поэтому необходимо вручную закодировать ( urlencode() ) данные.

Замечание: Вам надо применить htmlspecialchars() ко всему URL, потому что URL появляется как значение HTML-атрибута. В этом случае, браузер сначала раскодирует всё значение (обратная операция htmlspecialchars() ) и затем передаст URL. PHP поймёт URL правильно, так как вы закодировали данные с urlencode() . Вы заметите, что & в URL заменяется на & . Хотя большинство браузеров это исправляют, если вы забудете об этом, но всё же это не всегда возможно. Поэтому, даже если ваш URL не динамический, вам надо закодировать его с помощью htmlspecialchars() .

Я пытаюсь использовать , но переменные $foo.x и $foo.y недоступны. $_GET[‘foo.x’] тоже не существует. Где они?

При отправке формы, вместо стандартной кнопки отправки возможно использовать изображение с тэгом как:

Когда пользователь кликает где-либо на картинке, серверу будет послана сопутствующая форма с двумя дополнительными переменными: foo.x и foo.y .

Так как имена foo.x и foo.y не разрешены в PHP, они автоматически преобразуются в foo_x и foo_y . То есть, точки заменяются на подчёркивания. Таким образом, вы обращаетесь к этим переменным так же, как и к любым другим, описанным в разделе о получении переменных извне PHP. Например, $_GET[‘foo_x’] .

Замечание:

Пробелы в именах переменных запроса преобразуются в подчёркивания.

Как создать массивы в HTML ?

Для того, чтобы результаты были переданы вашему PHP скрипту как массив, именуйте элементы , или следующим образом:

Заметьте квадратные скобки после имени переменной, это делает её массивом. Вы можете сгруппировать элементы в массив, присваивая одно и то же имя разным элементам:

Это создаст два массива, MyArray и MyOtherArray, которые будут переданы PHP-скрипту. Также возможно задать определённые ключи для ваших массивов:

Массив AnotherArray теперь будет содержать ключи 0, 1, email и phone.

Замечание:

Определять ключи массивов в HTML необязательно. Если вы не установите ключи, массив заполняется в порядке появления элементов в форме. Наш первый пример будет содержать ключи 0, 1, 2 и 3.

Как получить все результаты из HTML-тега select с атрибутом multiple?

HTML-тег select с указанным multiple позволяет пользователю выбрать несколько элементов из списка. Эти элементы затем передаются обработчику формы. Проблема в том, что они все переданы с одним и тем же именем. Например:

Каждая выбранная опция поступит обработчику формы как:

var=option1 var=option2 var=option3

Каждая опция будет перезаписывать содержимое предыдущей переменной $var . Решение — воспользоваться возможностью PHP — «массив из элемента формы». Следует использовать следующее:

Это укажет PHP обрабатывать $var как массив и каждое присваивание значения в var[] добавит элемент в массив. Первым элементом будет $var[0] , следующим — $var[1] и т.д. Функция count() может быть использована для определения, сколько элементов было выбрано, а функция sort() — для сортировки массива опций, если это необходимо.

Заметьте, что если вы используете JavaScript, то [] в имени элемента могут вызвать проблемы, если вы пытаетесь обращаться к элементу по имени. Вместо этого используйте числовой идентификатор элемента формы или заключите имя переменной в одинарные кавычки и используйте его как индекс массива элементов, например:

variable = document.forms[0].elements['var[]'];

Как я могу передать переменную из JavaScript в PHP?

Так как JavaScript является (обычно) клиентской технологией, а PHP, как правило, серверной, и поскольку HTML — протокол «без состояния», эти два языка не могут обмениваться переменными напрямую.

Однако, возможно передавать переменные между ними. Один из способов достичь этого — сгенерировать JavaScript-код из PHP и принудительно обновлять браузер, посылая определённые переменные обратно PHP-скрипту. Нижеприведённый пример показывает как это сделать — он позволяет PHP-коду получить высоту и ширину экрана, что, обычно, возможно только на стороне клиента.

Пример #4 Генерирование JavaScript из PHP

if (isset( $_GET [ ‘width’ ]) AND isset( $_GET [ ‘height’ ])) // выводим переменные с размерами
echo «Ширина экрана: » . $_GET [ ‘width’ ] . «
\n» ;
echo «Высота экрана: » . $_GET [ ‘height’ ] . «
\n» ;
> else // передаём переменные с размерами
// (сохраняем оригинальную строку запроса
// — post переменные нужно будет передавать другим способом)

User Contributed Notes

There are no user contributed notes for this page.

  • ЧАВО
    • Общая информация
    • Списки рассылки
    • Получение PHP
    • Вопросы по базам данных
    • Установка
    • Проблемы сборки
    • Использование PHP
    • Хеширование паролей
    • PHP и HTML
    • PHP и COM
    • Разные вопросы

    Конвертер HTML в PHP

    Считаете ли вы этот инструмент полезным? То поделитесь этим с друзьями или коллегами. Это поможет нам сделать наши бесплатные веб-инструменты лучше.

    Эта форма позволяет вам конвертировать HTML в PHP код для использования с помощью операторов echo или print:

    Результат преобразования HTML в PHP код

    Переместить чтобы Сохранить Перенести в «Вставить код» для сохранения

    О преобразовании HTML в PHP код

    О преобразовании HTML в PHP

    Конвертер HTML в PHP была создана для онлайн преобразования HTML в PHP код. Это может пригодиться для вывода HTML кода через функции печати PHP, используемые в большинстве PHP CMS и Фреймворках, таких как WordPress, Yii, Laravel и т. д. Символы кавычек и обратной косой черты будут соответствующим образом экранированы с помощью обратной косой черты, поэтому строки будут печататься правильно.

    Как это работает?

    Просто вставьте свой HTML код в текстовую область выше и нажмите кнопку «Конвертировать», и вы получите код с PHP echo или print операторами в следующей текстовой области.

    Пример преобразования HTML в PHP

    Исходные данные (До):

      Your Title Here    
    Best Online Web Toolsis a link to another nifty site

    This is a Header

    This is a Medium Header

    Send me mail at [email protected]">[email protected].

    This is a new paragraph!

    This is a new paragraph!


    This is a new sentence without a paragraph break, in bold italics.

    Конечный результат (После):

      Your Title Here    
    Best Online Web Toolsis a link to another nifty site

    This is a Header

    This is a Medium Header

    Send me mail at [email protected]">[email protected].

    This is a new paragraph!

    This is a new paragraph!


    This is a new sentence without a paragraph break, in bold italics. ';
    '; echo ''; echo 'Your Title Here'; echo ''; echo ''; echo ''; echo ' '; echo '
    '; echo 'Best Online Web Toolsis a link to another nifty site'; echo '

    This is a Header

    '; echo '

    This is a Medium Header

    '; echo 'Send me mail at [email protected]">[email protected].'; echo '

    This is a new paragraph!

    '; echo '

    This is a new paragraph!

    '; echo '
    This is a new sentence without a paragraph break, in bold italics.'; echo '
    '; echo ''; echo '';

    После преобразования вы можете применить PHP код к своему проекту или использовать его для каких-то других целей.

    HTML в PHP — Веб-разработка на PHP

    Главный секрет PHP заключается в том, что сам язык — шаблонизатор. Если посмотреть на другой язык, в его файлах нельзя увидеть ничего похожего на теги .

    В PHP любой файл с кодом — это шаблон. Причем этот шаблон не имеет структуры, как бывает в некоторых шаблонизаторах.

    Мы можем создать PHP-файл, написать любой текст вне тегов и запустить код на выполнение. При этом он не упадет с указанием синтаксической ошибки.

    hi i am the template 

    Запуск этого кода выведет весь текст на экран:

    То же самое касается HTML, так как это всего лишь текст. Достаточно в любом PHP-файле добавить немного HTML и запустить его, как он будет выведен на экран:

      href="/lessons">Lessons  

    Запуск этого кода выведет весь текст на экран:

    Такое поведение языка существует исключительно ради создания сайтов. Если запустить веб-сервер в директории с этим файлом index.php, то при обращении к этому сайту мы получим вывод как в терминале. Это значит, что мы можем заменить такой код:

     echo '

    hello, world

    '
    ;
     hello, world 

    Отсюда следует важный вывод. Любой PHP-файл – это обычный текстовый файл со вставками PHP-кода с помощью тегов . Любой текст, написанный внутри него, отдается в вывод как есть, будь то браузер или запуск в командной строке.

    Теперь добавим немного PHP. Шаблон становится шаблоном, когда внутри него появляется подстановка данных. Принцип работы: в любом месте шаблона вставляются теги , внутри которых можно написать код. Фактически мы имеем дело с обычной строковой интерполяцией:

      href="/lessons"> echo 'Lessons'; ?>   

    Добавим немного программирования. Запуск следующего кода вернет такой же результат, что и код выше:

     $name = 'Lessons'; ?>  href="/lessons"> echo $name; ?>   

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

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

     $name = 'Lessons'; $id = 23; ?>  href="/lessons/ echo $id; ?>"> echo $name; ?>   

    Вывод на экран после запуска:

    Для удобства вставки кода в HTML PHP предлагает альтернативный синтаксис для стандартных конструкций языка. Например, для вставки значения используется сокращенная версия тега начала PHP-кода: ?> . Она отличается от полной тем, что вместо

    Сокращенная вставка

     $name = 'Lessons'; ?>  href="/lessons/ 23 ?>"> $name ?>   

    If

     if ($a === 5) : ?> A is equal to 5  endif; ?> 

    Switch

     switch ($foo) : ?>  case 1: ?> .  endswitch; ?> 

    Foreach

      foreach ($users as $user) : ?>  $user->getName() ?>   endforeach; ?>  

    С одной стороны поддержка CGI внутри самого языка позволяет начать делать сайт «на коленке» без особых знаний программирования и HTTP, что многие и делают. С другой — PHP толкает к созданию не поддерживаемого кода, который не может никто прочитать кроме автора.

        Upload your files   enctype="multipart/form-data" action="upload.php" method="POST"> Upload your file  type="file" name="uploaded_file"> />  type="submit" value="Upload">     if (!empty($_FILES['uploaded_file']))  $path = "uploads/"; $path = $path . basename( $_FILES['uploaded_file']['name']); if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path))  echo "The file " . basename( $_FILES['uploaded_file']['name']) . " has been uploaded"; > else echo "There was an error uploading the file, please try again!"; > > 

    Такой способ программирования возможен только в PHP, потому что только PHP это сразу и язык, и шаблонизатор, и CGI-скрипт. При таком способе организации кода сайт быстро начинает представлять из себя мешанину HTML и PHP.

    Если количество разных страниц сайта достигнет хотя бы десятка, то поддержка уже станет намного сложнее. Безопасность такой шаблонизации находится на нуле (см. XSS ).

    Также PHP не поддерживает макеты — специализированные шаблоны, содержащие обвязку сайта, в которую вставляется HTML конкретного обработчика.

    Открыть доступ

    Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

    • 130 курсов, 2000+ часов теории
    • 1000 практических заданий в браузере
    • 360 000 студентов

    Наши выпускники работают в компаниях:

    htmlspecialchars_decode

    Эта функция — антипод функции htmlspecialchars() . Она преобразовывает специальные HTML-сущности обратно в символы.

    Конвертируемые сущности: & , " (когда ENT_NOQUOTES не установлена), ' (когда ENT_QUOTES установлена), < и > .

    Список параметров

    Строка, которую надо преобразовать.

    Битовая маска из одного или нескольких следующих флагов, которые указывают как обрабатывать кавычки и какие типы документов использовать. Значением по умолчанию является ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 .

    Доступные константы, используемые в качестве параметра flags

    Имя константы Описание
    ENT_COMPAT Преобразовает двойные кавычки и пропускает одинарные.
    ENT_QUOTES Преобразовает и двойные, и одинарные кавычки.
    ENT_NOQUOTES Не преобразовает ни двойные, ни одинарные кавычки.
    ENT_SUBSTITUTE Заменяет некорректные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки, вместо возврата пустой строки.
    ENT_HTML401 Обрабатывать код как HTML 4.01.
    ENT_XML1 Обрабатывать код как XML 1.
    ENT_XHTML Обрабатывать код как XHTML.
    ENT_HTML5 Обрабатывать код как HTML 5.

    Возвращаемые значения

    Возвращает преобразованную строку.

    Список изменений

    Версия Описание
    8.1.0 Значение по умолчанию параметра flags изменено с ENT_COMPAT на ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 .

    Примеры

    Пример #1 Пример использования функции htmlspecialchars_decode()

    echo htmlspecialchars_decode ( $str );

    // обратите внимание, что в данном случае кавычки не будут преобразованы
    echo htmlspecialchars_decode ( $str , ENT_NOQUOTES );
    ?>

    Результат выполнения этого примера:

    this -> "

    this -> "

    Смотрите также

    • htmlspecialchars() — Преобразовывает специальные символы в HTML-сущности
    • html_entity_decode() — Преобразовывает HTML-сущности в символы
    • get_html_translation_table() — Возвращает таблицу преобразований, используемую функциями htmlspecialchars и htmlentities

    User Contributed Notes 8 notes

    15 years ago

    The example for «htmlspecialchars_decode()» below sadly does not work for all PHP4 versions.

    Quote from the PHP manual:
    «get_html_translation_table() will return the translation table that is used internally for htmlspecialchars() and htmlentities().»

    But it does NOT! At least not for PHP version 4.4.2.
    This was already reported in a bug report (http://bugs.php.net/bug.php?id=25927), but it was marked as BOGUS.

    Proof:
    Code:
    ———————
    var_dump ( get_html_translation_table ( HTML_SPECIALCHARS , ENT_QUOTES ));
    var_dump ( htmlspecialchars ( ‘\» , ENT_QUOTES ));
    ?>
    ———————

    This comment now is not to report this bug again (though I really believe it is one), but to complete the example and warn people of this pitfall.

    To make sure your htmlspecialchars_decode fake for PHP4 works, you should do something like this:

    function htmlspecialchars_decode ( $string , $style = ENT_COMPAT )
    $translation = array_flip ( get_html_translation_table ( HTML_SPECIALCHARS , $style ));
    if( $style === ENT_QUOTES )< $translation [ ''' ] = '\'' ; >
    return strtr ( $string , $translation );
    >
    ?>

    Br, Thomas

    18 years ago

    that works also with ä and " and so on.
    get_html_translation_table(HTML_ENTITIES) => offers more characters than HTML_SPECIALCHARS

    function htmlspecialchars_decode_PHP4($uSTR)
    return strtr($uSTR, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
    >

    17 years ago

    This should be the best way to do it.
    (Reposted because the other one seems a bit slower and because those who used the code under called it htmlspecialchars_decode_php4)

    if ( ! function_exists ( ‘htmlspecialchars_decode’ ) )
    function htmlspecialchars_decode ( $text )
    return strtr ( $text , array_flip ( get_html_translation_table ( HTML_SPECIALCHARS )));
    >
    >

    13 years ago

    Keep in mind that you should never trust user input — particularly for «mixed-bag» input containing a combination of plain text and markup or scripting code.

    Well, consider someone sending ‘&‘ to your PHP script:

    $var = «&» ;
    $var = ( htmlspecialchars_decode ( $var ) == $var ) ? htmlspecialchars ( $var ) : $var ;
    echo $var ;
    ?>

    Since ‘&’ decodes into ‘&’, (htmlspecialchars_decode($var) == $var) will be -false-, thus returning $var without that it’s escaped. In consequence, the script-tags are untouched, and you’ve just opened yourself to XSS.

    There is, unfortunately, no reliable way to determine whether HTML is escaped or not that does not come with this caveat that I know of. Rather than try and catch the case ‘I’ve already encoded this’, you are better off avoiding double-escaping by simply escaping the HTML as close to the actual output as you can muster, e.g. in the view in an MVC development structure.

    14 years ago

    If you use `htmlspecialchars()` to change things like the ampersand (&) into it’s HTML equivalent (&), you might run into a situation where you mistakenly pass the same string to the function twice, resulting in things appearing on your website like, as I call it, the ampersanded amp; «&». Clearly nobody want’s «&» on his or her web page where there is supposed to be just an ampersand. Here’s a quick and easy trick to make sure this doesn’t happen:

    $var = «This is a string that could be passed to htmlspecialchars multiple times.» ;

    if ( htmlspecialchars_decode ( $var ) == $var ) $var = htmlspecialchars ( $var );
    >

    ?>

    Now, if your dealing with text that is a mixed bag (has HTML entities and non-HTML entities) you’re on your own.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *