admin / 07.05.2018
Содержание
В PHP более 2000 функций, все они в конечном итоге генерируют гипертекст(контент), но только одна функция может выводить что либо на экран(в браузер), это phpinfo(). Все остальные нуждаются в инструкции(команде) печати. Без нее ни чего на экране не появится!!!
Инструкция печати PRINT() и ее синтаксис.
<?php
// инструкция печати в фигурных скобках
PRINT («Hello World»);
// инструкция печати без фигурных скобок.
PRINT «Hello World»;
?>
1)Прежде всего хочу заметить что PHP либеральный язык, т.е. регистр символов имен функций, конструкции и инструкций значения не имеет. Любой из этих вариантов правильный: PRINT Print print.
2)В конце после функции и инструкции должен стоять символ точка с запятой, этот символ говорит что действие функции или инструкции закончено.
3)После каждого имени функции и конструкции идут открывающая и закрывающая фигурная скобка, пример: имя(), в эти скобки в некоторых случаях вставляются какие либо данные. Но фигурные скобки обязательны только в функциях и конструкция, а в инструкциях(на пример печати) не обязательны, т.е. на усмотрение разработчика(например вас). На первых парах лучше эти скобки ставить чтобы не путаться.
Запомните!!! В скритовых языках вы должны строго соблюдать синтаксис, т.е. расставлять знаки пунктуации(скобки, кавычки, точки с запятой), иначе у вас будут ошибки которые не дадут нормально работать сценарию.
Вернемся к инструкции печати PRINT(). То что вы хотите вывести на экран не обязательно помещать в фигурные скобки и на примере выше видно оба варианта. И оба они правильны, но кавычки должны быть обязательно!!! Если есть открывающая кавычка, то должна быть и закрывающая. Кавычки могут быть: двойные(как в моем примере) так и одинарные.
В некоторых случаях вам понадобится выводить кавычки на экран:
print «Моя «первая странина» на PHP.»;
Этот вариант не правильный и он приведет сценарий к ошибке:
Parse error: syntax error, unexpected T_STRING in Z:\home\…
А правильно:
1)чердовать кавычки:
print ‘Моя «первая страница» на PHP.’;
2)Экранировать кавычки обратным сплешем:
print «Моя \»первая страница\» на PHP.»;
Оба варината правильных, но первый случай не всегда подойдет, потому что в PHP есть разница какие кавычки использовать для инструкции PRINT, если вам нужно вывести просто текст в кавычках то допустимы оба варианта, но лучше всего экранировать. О том какая разница в кавычках для инструкции PRINT вы узнаете когда будете изучать переменные.
Наберите в текстовом редакторе текст:
Cохраните его как print.php и протестируйте в браузере.
Инструкция PRINT не единственная для печати, ее альтернатива инструкция печати ECHO, разница только в том что PRINT допускает использование фигурных скобок как у функций, а в ECHO фигурные скобки не допустимы!!! Что лучше использовать, PRINT или ECHO? Это покажет ваша практика, для меня конечно PRINT, но в ECHO нужно набирать на 1 символ меньше 🙂
Кстати в PRINT есть несколько модификаций, например: sprintf, print_r и printf, но о всем по порядку. Я попытаюсь построить обучение так чтобы ни где не было забеганий на перед, многие авторы уже в этом примере «насовывают» переменные и условные конструкции, хотя рассказывают о них страниц через 10-40, в этом я не хочу быть похожим на них… Я понимаю что все что буду предоствалять на первый порах может показаться бредом, но уже в следующей главе ваши труды начнут давать результаты, ваша задача как можно детальнее вникать в смысл и из всего пытаться начинать свои сценарии. Так-же вам не обязательно сохранять файлы как в моих примерах, а сохраняйте как понятно вам. До окончания изучения у вас может образоваться десятки или даже сотни таких php-кодов, а уже когда перейдете к собственной практике, то открыв свою учебную папку вы с легкостью сможете найти нужную инструкцию, конструкцию или функцию.
intfile_put_contents ( string , mixed [, int = 0 [, resource ]] )
Если не существует, файл будет создан. Иначе, существующий файл будет перезаписан, за исключением случая, если указан флаг .
Путь к записываемому файлу.
Записываемые данные. Может быть string, array или ресурсом stream.
Если является ресурсом stream, оставшийся буфер этого потока будет скопирован в указанный файл. Это похоже на использование функции stream_copy_to_stream().
Также вы можете передать одномерный массив в качестве параметра . Это будет эквивалентно вызову file_put_contents($filename, implode('', $array)).
Значением параметра может быть любая комбинация следующих флагов, соединенных бинарным оператором ИЛИ (|).
Флаг | Описание |
---|---|
Ищет в подключаемых директориях. Подробнее смотрите директиву include_path. | |
Если файл уже существует, данные будут дописаны в конец файла вместо того, чтобы его перезаписать. | |
Получить эксклюзивную блокировку на файл на время записи. |
Корректный ресурс контекста, созданный с помощью функции stream_context_create().
Функция возвращает количество записанных байт в файл, или в случае ошибки.
Эта функция может возвращать как boolean , так и не-boolean значение, которое приводится к . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Пример #1 Пример простого использования
Пример #2 Использование флагов
Версия | Описание |
---|---|
5.1.0 | Добавлена поддержка и возможность передачи потокового ресурса в параметр |
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).
Вернуться к: Файловая система
Проект фактически представляет собой онлайн хранилище свободно распространяемого программного кода. Свои разработки здесь могут размещать все желающие, а доступ к проектам можно получить всем пользователям с любой точки мира.
PHP GD выравнивание многострочного текста
Html средствами сделать это просто, а как разместить текст на картинке по центру или прижатым в право средствами PHP GD?
Все очень просто! Делаем все то же самое, только не выводим текст целиком, а выводим построчно. Рассчитываем ширину строки и сколько нужно отступить от левого края,чтобы строка была по центру или прижата к правой части, в зависимости от того, какое выравнивание. Ниже приведен PHP код с комментариями:
<?php // Прописываем заголовок PNG-изображения header(‘Content-type: image/png’); // Создаем изображение $im = imagecreatetruecolor(600, 200); // Шрифт текста $font = ‘arial.ttf’; // Размер шрифта $font_size = 11; // Ширина области для вывода текста $width_text = 500; // Длинный многострочный текст, который нужно разбить на строки нужной нам длины $text = "Здесь длинный многострочный текст. Давайте просто разобъем строку на массив и при переборе массива выясним, где длина строки выходит за рамку, там и поставим перенос строки."; // Способ выравнивания текста //$align = "left"; $align = "center"; //$align = "right"; // Создаем цвета, которые понадобятся $blue = imagecolorallocate($im, 0x88, 0x88, 0xFF); // голубой $black = imagecolorallocate($im, 0x00, 0x00, 0x00); // черный // Заливаем изображение цветом imagefill($im, 1, 1, $blue); // Разбиваем наш текст на массив слов $arr = explode(‘ ‘, $text); // Возращенный текст с нужными переносами строк, пока пустая $ret = ""; // Перебираем наш массив слов foreach($arr as $word) { // Временная строка, добавляем в нее слово $tmp_string = $ret.’ ‘.$word; // Получение параметров рамки обрамляющей текст, т.е. размер временной строки $textbox = imagettfbbox($font_size, 0, $font, $tmp_string); // Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово if($textbox[2] > $width_text) $ret.=($ret==""?"":"\n").$word; else $ret.=($ret==""?"":" ").$word; } if($align=="left") { // Накладываем возращенный многострочный текст на изображение, отступим сверху и слева по 50px imagettftext($im, $font_size ,0 , 50, 50, $black, $font, $ret); } else { // Разбиваем снова на массив строк уже подготовленный текст $arr = explode("\n", $ret); // Расчетная высота смещения новой строки $height_tmp = 0; //Выводить будем построчно с нужным смещением относительно левой границы foreach($arr as $str) { // Размер строки $testbox = imagettfbbox($font_size, 0, $font, $str); // Рассчитываем смещение if($align=="center") $left_x = round(($width_text — ($testbox[2] — $testbox[0]))/2); else $left_x = round($width_text — ($testbox[2] — $testbox[0])); // Накладываем текст на картинку с учетом смещений imagettftext($im, $font_size ,0 , 50 + $left_x, 50 + $height_tmp, $black, $font, $str); // 50 — это отступы от края // Смещение высоты для следующей строки $height_tmp = $height_tmp + 19; } } // Выводим изображение в окне браузера imagepng($im); // Освобождает память занятую изображением imagedestroy($im); ?>
Обратите внимание, что шрифт arial.ttf должен лежать в этой же папке что и скрипт.
Что получится при выполнении данного PHP скрипта.
$align = "left";
$align = "center";
$align = "right";
Скачать пример здесь (файл .zip 191.5 КБ)
Источник: mittelspiel.ru
Последняя активность
Форум / Сайтостроителю / Авторские статьи
AlkatraZ (SV!) [Off][#](12.08.2011 / 23:50)
╭∩╮ (`-`) ╭∩╮
|
Вот глянул я один пост на форуме, в котором его автор пытался мне указать на ошибку, мол в одном файле нет закрывающего тега РНР ?>
Если внимательно гляните в папку /incfiles последней версии (4.4.0) то увидите, что закрывающих тэгов нет ни в одном файле.
Это не ошибка, так надо.
Более того, для INCLUDE файлов именно так и надо поступать.
—
В начале я просто хотел автору поста ответить "не ошибка, так надо", однако потом подумал, что данный вопрос может быть интересен многим и я решил написать данную статью, где объясню, почему вредны закрывающие тэги для подключаемых файлов в РНР, да и вообще…
AlkatraZ (SV!) [Off][#](12.08.2011 / 23:58)
╭∩╮ (`-`) ╭∩╮
|
Для начала, давайте разберемся, как WEB сервер обрабатывает PHP?
Я приведу "общие, грубые примеры", ибо сервер можно настроить как угодно. Но не в этом дело, мы сейчас говорим о другом и чтоб было понятно, я приведу простейшие примеры.
1) Если, к примеру, расширение файла .html он выдается "как есть" браузеру.
2) Если расширение .php то сервер подключает интерпретатор PHP
Но это еще не значит, что он (файл) будет обрабатываться интерпретатором PHP. Просто сервер знает, если поступит соответствующая комманда, нужно передать код файла интерпретатору PHP.
Открывающие и закрывающие тэги РНР как раз и являются этими самыми коммандами.
Открывающий тэг <?php включает интерпретатор и весь дальнейший код, будет рассматриваться сервером как РНР. До тех пор, пока не поступит закрывающий тэг ?>
или не будет достигнут конец файла
Изм. AlkatraZ (13.08.2011 / 00:57) [1]
AlkatraZ (SV!) [Off][#](13.08.2011 / 00:13)
╭∩╮ (`-`) ╭∩╮
|
Как вы наверно заметили, глядя готовые скрипты, ф одном файле может сочетаться и чистый HTML и PHP.
К примеру, весь файл состоит из чистого HTML, но в одном месте нужно вывести маленький счетчик данных, написанный на PHP.
Мы делаем в код врезку <?= …наш код… ?> или что-то подобное.
В принципе, для этого и нужен закрывающий PHP тэг ?> чтоб указать интерпретатору, что PHP на этом месте заканчивается и далее будет чистый HTML или что-то другое, но не PHP
AlkatraZ (SV!) [Off][#](13.08.2011 / 00:21)
╭∩╮ (`-`) ╭∩╮
|
А вот теперь, я отвечу на главный вопрос темы, почему я убрал из файлов закрывающие PHP тэги ?>
—
Можете сами провести эксперимент.
с ЛЮБОГО файла нашего двига, удалите закрывающий PHP тэг, потом гляньте, работает или нет, выдает ли ошибки?
Увидите, что все отлично работает и без закрывающих тэгов.
—
Рассматривая ситуацию, можно догадаться, что открывающим тэгом <?php мы дали указание серверу, что далее пошел PHP код, который должен обрабатываться интерпретатором.
Он и будет обрабатываться до тех пор, пока не встретит закрывающего тэга ?> или не достигнет конца файла.
В файлах двига нет чистого HTML, все на PHP, поэтому, закрывающие тэги ?> не нужны.
Более того, для INCLUDE файлов они могут быть вредны.
Очень часто, нгачинающие кодеры пользуются плохими редакторами, или невнимательно следят за кодом. И у них, после закрывающего тэга ?> могут быть пробелы, или переводы строк.
Из-за этого могут возникнуть ошибки при работе, которые потом долго и нудно будете выискивать.
Вы помните, сколько раз предупреждали, что СЛЕДИТЕ, чтоб после ?> небыло пробелов и других символов.
Но можно поступить гораздо проще (и логичнее), вообще убрав закрывающий тэг ?>
Зачем он нам, если в файле после него нет чистого HTML?
Изм. AlkatraZ (13.08.2011 / 00:22) [1]
zumak [Off][#](13.08.2011 / 00:37)
Поверь в мечту!
|
интересно однако…,таким способом можно в шапке включить интерпритатор а в ногах его выключить — об этом я как раз думал недавно,а теперь как оказалось его вообще закрывать не стоит…хм
L!MP (SV!) [Off][#](13.08.2011 / 00:40) |
Как то уже говорил об этом, но меня никто не послушал
zumak [Off][#](13.08.2011 / 00:40)
Поверь в мечту!
|
однако эти теги необходимы если мы наоборот вставляем php код в тело страницы html,в двиге же применяется код html в теле php,и значит закрывать тег не стоит,я правильно понял?
zumak [Off][#](13.08.2011 / 00:44)
Поверь в мечту!
|
интересно а вызов интерпритатора php нагружает сервак?,если да то насколько сильно?
AlkatraZ (SV!) [Off][#](13.08.2011 / 00:45)
╭∩╮ (`-`) ╭∩╮
|
zumak (12.08.2011/21:44)
интересно а вызов интерпритатора php нагружает сервак?,если да то насколько сильно?Да, нагружает.
L!MP (SV!) [Off][#](13.08.2011 / 00:46) |
Из стандартов кодирования для ZendFramework
Для файлов содержащих только PHP-код, закрывающий тег ("?>") не разрешен.
Он не требуется синтаксисом PHP. Это предотвращает от случайного включения в вывод конечных пробелов.
Изм.
L!MP (13.08.2011 / 00:47) [1]
L!MP (SV!) [Off][#](13.08.2011 / 01:02) |
AlkatraZ, просто сталкиваюсь с этим часто.
—
По поводу того на сколько загружает сервер вызов пхп интерпритатора: тут не надо обольщатся по поводу экономии на закрывание/открывание тегов.
Более того, большинство хостеров используют "опкод-кешеры" и их алгоритм работы сводит на нет все эти дергания.
hooligan [Off][#](13.08.2011 / 02:34) |
убрал во всех инклудах…
ramzes [Off][#](13.08.2011 / 02:47) |
ob_start();
……
ob_end_flush();
прощайте тупейшие причины изобретать новые (не обозначенные самим языком) правила
а уж довод типа "паршивый редактор вставляет байт", не повод лезть в правила пыха, странно видеть как автор статьи "блокнот оружие быдлокодера", предлогает лечить блокнот изменением php кода, вы не находите? или мне одному это в глаза бросается?
з.ы. то что в каком то фремворке кто то пернул,, еще не значит что это новый синтаксис языка
Windler [Off][#](13.08.2011 / 06:08) |
У меня была ошибка по этому поводу..
Долго мучался, что не так
Фильтр по автору
Скачать тему
Форум
Новые вверху
Создать файл в PHP можно двумя способами. Функцией и функцией . Функция лучше использовать только в случае обычной записи/дозаписи текста в файл, в остальных случаях лучше использовать .
Например нужно создать файл и записать в него текстовую информацию.
<?php $filename = ‘data.txt’; $text = ‘Этот текст будет добавлен в файл’ . PHP_EOL; // Перенос строки лучше делать константой PHP_EOL $text2 = ‘И этот тоже!’; // Открываем файл, флаг W означает — файл открыт на запись $f_hdl = fopen($filename, ‘w’); // Записываем в файл $text fwrite($f_hdl, $text); // и $text2 fwrite($f_hdl, $text2); // Закрывает открытый файл fclose($f_hdl); ?>
В результате в файле будет следующая информация:
Этот текст будет добавлен в файл И этот тоже!
Функция повторяет вызов функций fopen(), fwrite(), fclose().
Например нужно создать файл и записать в него текстовую информацию.
<?php file_put_contents(‘data2.txt’, ‘Текст для записи’); ?>
В результате в файле будет:
Текст для записи
Если вы хотите этой функцией записать информацию в уже существующий файл, при это сохранив информацию в нем, то в качестве третьего параметра нужно передать константу .
<?php file_put_contents(‘data2.txt’, PHP_EOL.’Пишем далее’, FILE_APPEND); ?>
В результате в файле будет следующая информация:
Текст для записи Пишем далее
При создании файла убедитесь, что у папки, где будет создаваться файл, выставлены права доступа для создания файлов.
FILED UNDER : IT