- Теги PHP
- Компактный вид
- Пользовательские правила
- В php доступны три типа тегов.
- Пример
- Короткий эхо-тег
- Пример 1: PHP-скрипт с закрывающим тегом в конце
- Пример 2: PHP-скрипт без закрывающего тега в конце
- Синтаксис и теги PHP
- Как правильно сделать тег на php?
- Как в своем файле php сделать свой тег (или любой другой) как в DLE?
- Войдите, чтобы написать ответ
- PHP — как отправить письмо с одного EMail на другой, с помощью SMTP+php?
Теги PHP
PHP – код встраивается с помощью тегов (дескрипторов).
Когда PHP обрабатывает файл, он ищет открывающие и закрывающие теги, такие как , которые указывают PHP , когда начинать и заканчивать обработку кода между ними. Подобный способ обработки позволяет PHP внедряться во все виды различных документов, так как всё, что находится вне пары открывающих и закрывающих тегов, будет проигнорировано парсером PHP.
Компактный вид
Компактный вид – доступен, только если директива short_open_tag имеет значение on, по умолчанию в файле php.ini в строке 198 указано значение off .
Следует помнить, что при работе с этими дескрипторами могут возникнуть проблемы при выводе xml – документов, так как последовательность тегов будет воспринята как выделение php – кода.
Для максимальной совместимости рекомендуется использовать только обычные теги.
Пользовательские правила
Файл должен начинаться и заканчиваться между тегами , а все, кроме этого, игнорируется синтаксическим анализатором php .
В php доступны три типа тегов.
- Обычный тег — normal tag ()
- Короткий эхо-тег — short echo tag ()
- Короткий тег — short tag ()
Для стабильной работы рекомендуется использовать только обычный и короткий эхо-тег.
Если в вашем файле есть только php-код, не используйте закрывающий тег.
php code; php code; php code;
Но если вы встраиваете php с html , то нужно использовать php -код с открывающим и закрывающим тегом.
php code; php code; php code; ?>
Если вы хотите просто напечатать один текст или что-то в этом роде, вам следует использовать сокращенную версию.
Но если вы хотите что-то обработать, вы должны использовать обычный тег.
$var = 3; $var2 = 2; $var3 = $var+$var2; if($var3) ?>
Если вы внедрили php с html и одной строкой, не нужно использовать точку с запятой.
Но если у вас несколько строк, используйте точку с запятой.
Нет никакой разницы между обычным ( ) и коротким эхо-тегом ( ), но без использования комментариев.
Пример
Обычный тег с c++ стиль однострочного комментария: //"Обычный тег"; ?> прерывает режим php и возвращает режим html
HTML
-код после (обычный тег) // и commnet, затем (закрывающий тег) ?> прерывает режим php и возвращает режим html
Короткий эхо-тег
html
-код после (короткий эхо-тег) // и commnet then (закрывающий тег) ?> прерывает режим php и не возвращает режим html
Правила для точки с запятой, что удаление точки с запятой иногда необязательно, но вам нужно знать условие, когда ее можно удалить, а когда нельзя.
Пример 1: PHP-скрипт с закрывающим тегом в конце
>?php // php code //можно убрать точку с запятой mysqli_close( $db ) ?>
Пример 2: PHP-скрипт без закрывающего тега в конце
>?php // php code // нельзя убрать точку с запятой mysqli_close($db);
Если файл содержит только код PHP , желательно опустить закрывающий тег PHP в конце файла. Это предотвращает добавление случайных пробелов или новых строк после закрывающего тега PHP .
По материалам документации PHP
Синтаксис и теги PHP
В php можно использовать четыре разные пары открывающих и закрывающих тегов. Вот список тегов.
- Синтаксис по умолчанию
- Короткие открытые теги
- Теги HTML-скрипта
- Теги стиля ASP
Синтаксис по умолчанию
Синтаксис по умолчанию начинается с «».
Короткие открытые теги
Короткие теги начинаются с «». Короткие теги стиля доступны только в том случае, если они включены в конфигурационном файле php.ini на серверах.
Теги HTML-скрипта
Теги HTML-скрипта выглядят так:
У некоторых редакторов, таких как редактор Front Page, есть собственная проблема, связанная с аварийной ситуацией, и указанный скрипт эффективен для ее решения.
Теги стиля ASP
Теги стиля ASP начинаются с «». Теги стиля ASP доступны только в том случае, если они включены в конфигурационном файле php.ini на серверах.
Примечание: приведенные выше два тега и примеры приведены только для справки, но больше не используются на практике.
Разделение операторов PHP
В PHP операторы заканчиваются точкой с запятой (;), например C или Perl. Закрывающий тег блока кода PHP автоматически подразумевает точку с запятой, нет необходимости использовать точку с запятой, заканчивающую последнюю строку блока PHP.
Правила разделения операторов
Действительные коды
В приведенном выше примере присутствуют точка с запятой (;) и закрывающий тег PHP.
В приведенном выше примере после последней инструкции не ставится точка с запятой (;), но присутствует закрывающий тег PHP.
В приведенном выше примере в последней инструкции есть точка с запятой (;), но нет закрывающего тега PHP.
Чувствительность к регистру PHP
В PHP определяемые пользователем функции, классы, ключевые слова основного языка (например, if, else, while, echo и т. Д.) Не чувствительны к регистру. Поэтому три выражения echo в следующем примере равны.
"); ECHO("We are learning PHP case sensitivity
"); EcHo("We are learning PHP case sensitivity
"); ?>
Мы учим чувствительность к регистру в PHP Мы учим чувствительность к регистру в PHP Мы учим чувствительность к регистру в PHP
С другой стороны, все переменные чувствительны к регистру.
Рассмотрим следующий пример. Только первый оператор отображает значение в виде $ amount, потому что $ amount, $ AMOUNT, $ amoUNT — это три разные переменные.
"); echo("The Amount is : $AMOUNT
"); echo("The Amount is : $amoUNT
"); ?>
Количество: 200 Сумма составляет: Сумма составляет:
Нечувствительность к пробелам в PHP
В целом, пробелы не видны на экране, включая пробелы, символы табуляции и символы конца строки, то есть возврат каретки. В PHP пробелы не имеют значения при кодировании. Вы можете разбить один оператор строки на любое количество строк или количество отдельных операторов вместе в одной строке.
Следующие два примера одинаковы:
"; echo "His Class is : $class and Roll No. is $roll_no"; > student_info("David Rayy", "V", 12) ?>
Имя студента: Дэвид Рэй Его класс: V и номер рулона 12
Пример: предварительная нечувствительность к пробелам
"; echo "His Class is : $class and Roll No. is $roll_no"; > student_info( "David Rayy", "V", 12 ) ?>
Имя студента: Дэвид Рэй Его класс: V и номер рулона 12
Пример: нечувствительность к пробелам с табуляцией и пробелами
В следующем примере пробелы и табуляции используются в числовой операции, но в обоих случаях $ xyz возвращает одно и то же значение.
'; // tabs and spaces $xyz = 11 + 12; echo $xyz; ?>
PHP: однострочные и многострочные комментарии
Однострочный комментарий
PHP поддерживает следующие два разных способа комментирования.
# Это однострочный комментарий.
// Это еще один способ однострочного комментария.
Как сделать однострочный комментарий.
Многострочные комментарии
PHP поддерживает ‘C’, стиль комментариев. Комментарий начинается с пары символов / * и заканчивается парой символов * /.
/ * Это тестирование с несколькими комментариями,
и эти строки будут игнорироваться
во время исполнения * /
Как сделать многострочные комментарии
Многострочные комментарии не могут быть вложенными
Первый PHP-скрипт
Вот первый PHP-скрипт, который будет отображать «Hello World . » в веб-браузере.
Теги говорят веб-серверу обрабатывать все внутри тегов как PHP-код для запуска. Код очень прост. Он использует встроенную функцию PHP «echo» для отображения текста «Hello World . » на веб-странице. Все, что находится вне этих тегов, отправляется прямо в браузер.
Иллюстрированная презентация
Сочетание PHP и HTML
Синтаксис PHP применим только внутри тегов PHP.
PHP может быть встроен в HTML и размещен в любом месте документа.
Когда PHP встроен в документы HTML и PHP анализирует этот документ, он интерпретирует раздел, заключенный в открывающий тег () PHP, и игнорирует остальные части документа.
PHP и HTML видны вместе в следующем примере.
Практика здесь онлайн:
Предыдущий: Установить WAMP
Далее: Переменные PHP
Как правильно сделать тег на php?
Хочу сделать тег, чтобы если есть ключевые слова в теге, то тег отображало, если нет ключевых слов, то не отображало.
если есть ключевые слова, которые во второй половине после | (их может быть сколько угодно), то выводило #хештег . Не обязательно там должен быть хештег, может быть слово или словосочетание.
$text = 'Уже наступило лето , а скоро наступит осень'; $tegs = 'Как делать теги php#лето|лето,летний[/keyText] Как делать теги php#осень|осень,осенний[/keyText]'; if(strpos($tegs, "Как делать теги php") !== false) < $tegsStr = str_replace("Как делать теги php", "", $tegs); $tegsStr = str_replace("[/keyText]", "", $tegsStr); // Удаляю не нужные части тега $exploded_type = explode("|", $tegsStr); // Разделяю на слово и теги $tagsActive= false; $keys = trim(mb_strtolower($exploded_type[1], 'UTF-8')); $text_post = trim(mb_strtolower($text, 'UTF-8')); $text_post = str_replace([".", "\n"], " ", $text_post); $text_post = ltrim($text_post); $text_post = preg_replace("/\s/", " ", $text_post); $keys = preg_replace('/\s\s+/', ' ', $keys); $keys = str_replace(', ', ',', $keys); $key_array = explode(",", $keys); $text_array = explode(" ", $text_post); foreach ($text_array as $word) < if ($word != NULL) < if (in_array($word, $key_array)) < $tagsActive= true; >> > if (!$tagsActive) < $tegs = preg_replace('/\Как делать теги php(.*)\[\/keyText]/', '', $tegs); >else < preg_match('/\Как делать теги php(.*)\|/', $tegs, $matches, PREG_OFFSET_CAPTURE, 0); print_r($matches); $tegs = preg_replace('/\Как делать теги php(.*)\[\/keyText]/', $matches[1][0], $tegs); >> echo $text.'
'.$tegs; // Должно получиться предложение с хештегами (если есть ключевые слова)
Когда есть один тег, то он работает, а когда несколько, то работает только последний. Как сделать конструкцию правильно? Знаю что нужно перебирать массивами, но не могу понять как. Может кто помочь, исправить этот код.
- собрать ассоциативный массив возможных тегов ( Тег => [слово1, слово2] ) из строки с Как делать теги php и [/keyText]
- разбить строку $text по символам пунктуации
- найти вхождения из массива, полученного на шаге 1, в массиве, полученном на шаге 2
$text = 'Уже наступило лето , а скоро наступит осень'; $tags = 'Как делать теги php#лето|лето,летний[/keyText] Как делать теги php#осень|осень,осенний[/keyText]'; function getTags($tagsStr, $before='Как делать теги php', $after='[/keyText]') < $posStart = 0; $posEnd = 0; $tags = []; while($posStart < mb_strlen($tagsStr)) < $posStart = mb_strpos($tagsStr, $before, $posStart); if($posStart === false) < break; >$posEnd = mb_strpos($tagsStr, $after, $posStart); if($posEnd === false) < break; >$tagLine = mb_substr($tagsStr, $posStart + mb_strlen($before), $posEnd - $posStart - mb_strlen($before)); if(mb_strpos($tagLine, '|') !== false) < [$tag, $tagWordsAsStr] = explode('|', $tagLine); $tagWords = array_unique(array_filter(array_map('trim', explode(',', $tagWordsAsStr)))); if($tagWords) < $tags[$tag] = $tagWords; >> $posStart = $posEnd + 1; > return $tags; > $textAsWords = array_map('mb_strtolower', array_unique(preg_split('/[\.\s,!()]+/u', $text))); $foundedTags = []; foreach (getTags($tags) as $tag => $words) < foreach ($words as $word) < if(in_array($word, $textAsWords)) < $foundedTags[] = $tag; >> > printf("%s
%s", $text, implode(', ', $foundedTags));
Спасибо большое тебе. Очень помог!! Все теги находит, но я хотел бы чтобы он их заменял и вставлял на месте пропуска, а не только все подряд выводил.
Например:
$text = 'Уже наступило лето , а скоро наступит осень'; $tegs = 'Выводим хештег Как делать теги php#лето|лето,летний[/keyText] и еще текст Как делать теги phpлюбой текст|слово1,слово2[/keyText]';
Должно вывести:
Выводим хештег #лето и еще текст
второй тег, то есть словосочетание не выведет, потому что не находит в тексте. Что нужно поменять в коде, чтобы сработало так?
rusgayfer, Для этого нужно в функции getTags сохранять тег как текст — это позволит его потом найти. Затем если строка тега найдена в $text, то заменять ее на тег, а если не найдена, то заменить строку тега на ».
$text = 'Уже наступило лето , а скоро наступит осень'; $tegs = 'Выводим хештег Как делать теги php#лето|лето,летний[/keyText] и еще текст Как делать теги phpлюбой текст|слово1,слово2[/keyText]'; function getTags($tagsStr, $before='Как делать теги php', $after='[/keyText]') < $posStart = 0; $posEnd = 0; $tags = []; while($posStart < mb_strlen($tagsStr)) < $posStart = mb_strpos($tagsStr, $before, $posStart); if($posStart === false) < break; >$posEnd = mb_strpos($tagsStr, $after, $posStart); if($posEnd === false) < break; >$tagLine = mb_substr($tagsStr, $posStart + mb_strlen($before), $posEnd - $posStart - mb_strlen($before)); if(mb_strpos($tagLine, '|') !== false) < [$tag, $tagWordsAsStr] = explode('|', $tagLine); $tagWords = array_unique(array_filter(array_map('trim', explode(',', $tagWordsAsStr)))); if($tagWords) < $tags[$tag] = ['words' =>$tagWords, 'text' => sprintf('%s%s%s', $before, $tagLine, $after)]; > > $posStart = $posEnd + 1; > return $tags; > $textAsWords = array_map('mb_strtolower', array_unique(preg_split('/[\.\s,!()]+/u', $text))); foreach (getTags($tegs) as $tagKey => $tag) < $tagFounded = false; foreach ($tag['words'] as $word) < if(in_array($word, $textAsWords)) < $tagFounded = true; break; >> $tegs = str_replace($tag['text'], $tagFounded ? $tagKey : '', $tegs); > print_r($tegs);
Как в своем файле php сделать свой тег (или любой другой) как в DLE?
а как вместо сделать , как в DLE?
На сколько я помню, в DLE используется str_replace(), правда это было оч. давно, может у них что-то поменялось. А так @Fesor прав, используйте Twig
@evgeny_ryabcev что именно? Twig — это шаблонизатор, подключаете и используете, а str_replace() это функция PHP которая заменяет одну строку на другую, к примеру
$result = str_replace('', $theme, $template);
PHP — сам себе шаблонизатор и ему не нужны другие шаблонизаторы.
Задумайтесь, большая ли разница между записями и
@evgeny_ryabcev если как в dle то все очень просто. Берется содержимое файла с шаблоном, и через str_replace заменяются все переменные на их значения. Ну или же можно через регулярные выражения, тогда больше возможностей. Но вообще проще использовать полноценный шаблонизатор.
@link_irk, вы не правы. PHP создавался как шаблонизатор для Си, это да. но с тех пор много воды утекло, да и использовать php синтаксис в шаблонах не всегда удобно. Да и фронтэндщику не даш поправить шаблон, ибо есть риск что-то испортить. Да и можно для шаблонов вводить специализированные синтаксические конструкции. В этом плане лучше использовать штукти типа twig, в которых уже есть реализация и наследования шаблонов, и блоков и расширений. И все это компилится в мессиво php кода которое вы сами просто не захотите писать.
в этом то и проблема, что это месиво, инкапсулируясь за синтаксисом ещё одного языка, который придётся выучить, отдаляет от понимания происходящих процессов в скриптах и к тому же неплохо нагружает веб-сервер