4 небольших, но весьма полезных функции PHP


Содержание

7 супер удобных PHP функций для начинающих

Вы когда-нибудь просматривали список функций доступных в PHP. Я насчитал приблизительно 5025 штук на странице – краткий справочник по PHP. Конечно, существует зависимость между количеством функций и теми расширениями, которые у вас установлены, но все равно — это целая куча функций! Конечно, я не могу и не хочу описывать каждую функцию. Однако я познакомлю вас действительно удобными и важными функциями языка PHP в этом кратком уроке.

Функция 1: Array_rand

Давайте начнем с самой простой. Хотите получить случайный элемент массива? Вы можете использовать функцию rand , чтобы получить случайный индекс, передавая в качестве аргументов, например, 0 и последний индекс массива; это даст вам случайный ключ, который вы можете использовать для извлечения значения из массива.

Однако, есть способ, который намного быстрее: aray_rand . Передайте в функцию массив, и она вернет вам случайный ключ.

Если вы хотите получить несколько случайных значений, передайте второй параметр и функция возвратит массив ключей, соответствующих случайным значениям.

Функция 2: strip_tags

Довольно часть приходится принимать большие куски текста от пользователей, например, в качестве комментариев. Конечно, вероятно вы не желаете принимать, например, HTML тэги, верно? Итак, если вы хотите вырезать HTML и PHP тэги, используйте функцию strip_tags .

Конечно, вы можете захотеть оставить некоторые тэги, чтобы стилизовать некоторые куски текста, например, такие как strong , em , code , для этого в качестве второго параметра передайте нужные тэги.

Функция 3: strftime

Дата является важной частью любого веб-приложения, поэтому вы должны иметь возможность вывести дату в любом формате. Это не сложно, особенно, если вы тяните дату из БД или используете функцию time() , может быть – но что насчет форматирования? Функция strftime поможет вам отформатировать дату как вам угодно. В функцию передается форматирующая строка и временной отрезок, а на выходе получаем преобразованную дату.

Невозможно запомнить все форматирующие маркеры, поэтому обратитесь к соответствующим руководствам.

Функция 4: basename

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

Функция 5: list

Это довольно удобно: скажем, у вас есть массив, и вы хотите каждый элемент массива присвоить собственной переменной. При помощи функции list сделать это довольно просто:

Как вы можете видеть, в качестве параметров функции list передается список переменных, которым затем присваиваются соответствующие значения массива. Это немного отличается от обычно синтаксиса PHP, так как вызов функции происходит слева, но все работает, вот пример:

Функция 6: range

Допустим, вам когда-нибудь потребуется список, состоящий из чисел, чтобы, например, воспроизвести определенное количество итераций. Реализовать задуманное вам поможет функция range . Просто передайте в функцию начало и конец цифры (или буквы), и функция возвратит массив чисел (букв).

Как вы можете видеть, включены будут все цифры переданные в функцию. В функцию можно передать третий параметр — step , он будет использоваться как инкремент между элементами последовательности.

Функция 7: isset

Чтобы определить установлена переменная или нет, используйте функцию isset . В функцию передается имя переменной, в случае существований переменной функция возвратит TRUE , иначе вернет FALSE (даже в то случае, если переменная равна NULL ).

Так как эта функция работает и в массивах, то ее часто используют для определения существования элемента массива по определенному ключу, например, для суперглобальных массивов $_POST и $_GET . Если значение существует, вы делаете одно, иначе другое. Например, страница поиска может работать так:

4 небольших, но весьма полезных функции PHP

Каждый веб-разработчик хранит полезные фрагменты кода в своей личной библиотеке, чтобы не «изобретать велосипед» каждый раз заново. В данной статье собраны наиболее интересные и полезные фрагменты PHP-кода, которые я добавил к своей личной библиотеке за последние 3 месяца.

Конвертация PDF-файлов в JPG с помощью PHP и Image Magick

Этот простой фрагмент PHP-кода конвертирует PDF-файл в изображение JPG. Это очень полезно, если вам нужно создать изображение для предварительного просмотра ваших файлов в формате PDF. Пожалуйста, обратите внимание, что у вас должно быть установлено расширение Image Magick на вашем сервере, чтобы использовать этот код.

$pdf_file = ‘./pdf/demo.pdf’ ;
$save_to = ‘./jpg/demo.jpg’ ; //Убедитесь, что Apache имеет разрешения на запись в эту папку! (частая проблема)

//выполните ImageMagick коммандой ‘convert’ и конвертируйте PDF в JPG с указанными настройками
exec ( ‘convert «‘ . $pdf_file . ‘» -colorspace RGB -resize 800 «‘ . $save_to . ‘»‘ , $output , $return_var ) ;
if ( $return_var == 0 ) <
//если конвертация прошла успешно
print «Conversion OK» ;
>
else print «Ошибка конвертации.
» . $output ;

Проверка записываемой информации в базу данных

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

function cleanInput ( $input ) <

$search = array (
‘@@si’ , // Удаляем javascript
‘@ ]*?>@si’ , // Удаляем HTML теги
‘@@siU’ , // Удаляем теги style
‘@ @’ // Удаляем многострочные комментарии
) ;

$output = preg_replace ( $search , » , $input ) ;
return $output ;
>

function sanitize ( $input ) <
if ( is_array ( $input ) ) <
foreach ( $input as $var => $val ) <
$output [ $var ] = sanitize ( $val ) ;
>
>
else <
if ( get_magic_quotes_gpc ( ) ) <
$input = stripslashes ( $input ) ;
>
$input = cleanInput ( $input ) ;
$output = mysql_real_escape_string ( $input ) ;
>
return $output ;
>

// Использование:
$bad_string = «Привет! Какой хороший сегодня день!» ;
$good_string = sanitize ( $bad_string ) ;
// $good_string вернет «Привет! Какой хороший сегодня день!»

// Также используйте для проверки POST/GET данных
$_POST = sanitize ( $_POST ) ;
$_GET = sanitize ( $_GET ) ;

Создание data URI изображения при помощи PHP

Вместо предоставления традиционного адреса изображения, вы можете использовать данные изображения в кодировке base64 и добавить их в атрибут src. Это экономит сетевые запросы для каждого изображения, и предотвращает попытки несанкционированного доступа к каталогам с изображениями. Обратите внимание, что в IE7 и ниже, это работать не будет.

// имя изображения
$image = ‘cricci.jpg’ ;

// кодируем изображение в base64
$imageData = base64_encode ( file_get_contents ( $image ) ) ;

// формат пути к изображению: data:;base64,;
$src = ‘data: ‘ . mime_content_type ( $image ) . ‘;base64,’ . $imageData ;

//Вывод изображения
echo ‘ , $src , ‘»>’ ;

Создание CSV-файла из массива PHP

Это простая, но эффективная функция для генерации CSV-файла из массива PHP. Функция принимает 3 параметра: данные, разделители полей CSV (по умолчанию это запятая) и ограничители полей CSV (по умолчанию — двойные кавычки).

Разархивирование файлов при помощи PHP


Эта функция принимает два параметра: zip-архив и папку, в которую нужно архив распаковать.

Определить местонахождение по IP

Этот полезный фрагмент кода поможет вам определить местоположения конкретного IP. Функция принимает один IP в качестве параметра, и возвращает местоположение. Если местоположение не найдено, возвращается UNKNOWN.

function detect_city ( $ip ) <

if ( ! is_string ( $ip ) || strlen ( $ip ) 1 || $ip == ‘127.0.0.1’ || $ip == ‘localhost’ )
$ip = ‘8.8.8.8’ ;

$curlopt_useragent = ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)’ ;

$url = ‘http://ipinfodb.com/ip_locator.php?ip=’ . urlencode ( $ip ) ;
$ch = curl_init ( ) ;

$curl_opt = array (
CURLOPT_FOLLOWLOCATION => 1 ,
CURLOPT_HEADER => 0 ,
CURLOPT_RETURNTRANSFER => 1 ,
CURLOPT_USERAGENT => $curlopt_useragent ,
CURLOPT_URL => $url ,
CURLOPT_TIMEOUT => 1 ,
CURLOPT_REFERER => ‘http://’ . a > $_SERVER [ ‘HTTP_HOST’ ] ,
) ;

if ( preg_match ( ‘<

  • City : ([^ , $content , $regs ) ) <
    $city = $regs [ 1 ] ;
    >
    if ( preg_match ( ‘<
  • State/Province : ([^ , $content , $regs ) ) <
    $state = $regs [ 1 ] ;
    >

    if ( $city != » & amp ;& amp ; $state != » ) <
    $location = $city . ‘, ‘ . $state ;
    return $location ;
    > else <
    return $default ;
    >

    Отсылаем логи ошибок себе на email

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

    Эта функция будет отсылать вам по электронной почте логи, как только ошибка произойдет на вашем сайте. Очень удобно, чтобы быть всегда в курсе проблем вашего сайта.

    Ошибка ( $number ) произошла в строке
    $line в файле: $file .

    $headers = ‘Content-type: text/html; charset=UTF-8’ . » \r \n » ;

    // Кому отсылаем email.
    error_log ( $email , 1 , span >= «cloak001f648d3a5a2d08840cfb1e2039a8ba» > Этот адрес электронной почты защищён от спам — ботов . У вас должен быть включен JavaScript для просмотра . span > script type = ‘text/javascript’ >
    document . getElementBy >( ‘cloak001f648d3a5a2d08840cfb1e2039a8ba’ ) . innerHTML = » ;
    var prefix = ‘ma’ + ‘il’ + ‘to’ ;
    var path = ‘hr’ + ‘ef’ + ‘=’ ;
    var addy001f648d3a5a2d08840cfb1e2039a8ba = »you’ + ‘@’ ;
    addy001f648d3a5a2d08840cfb1e2039a8ba = addy001f648d3a5a2d08840cfb1e2039a8ba + ‘youremail’ + ‘.’ + ‘com’ ;
    var addy_text001f648d3a5a2d08840cfb1e2039a8ba = »you’ + ‘@’ + ‘youremail’ + ‘.’ + ‘com’ ; document . getElementBy >( ‘cloak001f648d3a5a2d08840cfb1e2039a8ba’ ) . innerHTML += ‘ + path + ‘\» + prefix + ‘:’ + addy001f648d3a5a2d08840cfb1e2039a8ba + ‘\’>’ + addy_text001f648d3a5a2d08840cfb1e2039a8ba + ‘ ‘ ;
    ‘, $headers);

    // Определитесь как реагировать на ошибки (на стороне пользователя)
    // Либо это сообщение об ошибке, или завершить работу скрипта .
    // Этот код прекращает работу скрипта, если ошибка была более чем просто уведомление.
    if ( ($number !== E_NOTICE) && ($number nettuts_error_handler ‘);

    // Trigger an error. (var doesn’ t exist )
    echo $somevarthatdoesnotexist ;

    Удаляем HTML-теги добавленные Microsoft Word

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

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

    function cleanHTML ( $html ) <
    $html = ereg_replace ( » ]*>» , «» , $html ) ;

    $html = ereg_replace ( » ]*)( > [ ^ «]*» | ‘[^’ ] * ‘|[^>]+)([^>]*)>»,» «,$html);
    $html = ereg_replace(» ]*)( |’ [ ^ ‘]*’ | [ ^ > ] + ) ( [ ^ > ] * ) > «,» \ 1 > «, $html );

    Автоматическое добавление водяных знаков на изображение

    Если вы выкладываете ваши собственные изображения на веб-сайтах, то есть вероятность, что вы не захотите видеть их везде в интернете на следующий день. Для предотвращения кражи изображений необходимо заявить о себе как создателе изображений, и добавление водяных знаков на них, как правило, хорошая идея. Эта функция позволяет автоматически добавлять водяные знаки на ваши изображения.

    function watermarkImage ( $SourceFile , $WaterMarkText , $DestinationFile ) <
    list ( $width , $height ) = getimagesize ( $SourceFile ) ;
    $image_p = imagecreatetruecolor ( $width , $height ) ;
    $image = imagecreatefromjpeg ( $SourceFile ) ;
    imagecopyresampled ( $image_p , $image , 0 , 0 , 0 , 0 , $width , $height , $width , $height ) ;
    $black = imagecolorallocate ( $image_p , 0 , 0 , 0 ) ;
    $font = ‘arial.ttf’ ;
    $font_size = 10 ;
    imagettftext ( $image_p , $font_size , 0 , 10 , 20 , $black , $font , $WaterMarkText ) ;
    if ( $DestinationFile <> » ) <
    imagejpeg ( $image_p , $DestinationFile , 100 ) ;
    > else <
    header ( ‘Content-Type: image/jpeg’ ) ;
    imagejpeg ( $image_p , null , 100 ) ;
    >
    imagedestroy ( $image ) ;
    imagedestroy ( $image_p ) ;
    >

    /******** использование **********/
    $SourceFile = ‘/home/user/www/images/image1.jpg’ ;
    $DestinationFile = ‘/home/user/www/images/image1-watermark.jpg’ ;
    $WaterMarkText = ‘Ваш копирайт’ ;
    watermarkImage ( $SourceFile , $WaterMarkText , $DestinationFile ) ;

    Автоматическое добавление ссылки для email-адресов

    Следующий код ищет адреса электронной почты в строке, и заменяет их на ссылку mailto. Довольно полезно на приватных приложений, но из-за спамеров я не рекомендую использовать это на сайте, в блоге или на форуме.

    $stringa = «This should format my email address cloakaaf64c54702bbd3a52ac8330b0161d5e «>Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. » ;

    $pattern = «/([a-z0-9][_a-z0-9.-]+@([0-9a-z][_0-9a-z-]+\.)+[a-z]<2,6>)/i» ;
    $replace = » \\ 1″ ;
    $text = preg_replace ( $pattern , $replace , $stringa ) ;
    echo htmlspecialchars ( $text ) ;

    Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

    Полезные сниппеты и функции PHP

    Конвертация PDF-файлов в JPG с помощью PHP и Image Magick

    Этот простой фрагмент PHP-кода конвертирует PDF-файл в изображение JPG. Это очень полезно, если вам нужно создать изображение для предварительного просмотра ваших файлов в формате PDF. Пожалуйста, обратите внимание, что у вас должно быть установлено расширение Image Magick на вашем сервере, чтобы использовать этот код.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> $pdf_file = ‘./pdf/demo.pdf’;

    $save_to = ‘./jpg/demo.jpg’; //Убедитесь, что Apache имеет разрешения на запись в эту папку! (частая проблема)

    //выполните ImageMagick коммандой ‘convert’ и конвертируйте PDF в JPG с указанными настройками

    exec(‘convert «‘.$pdf_file.'» -colorspace RGB -resize 800 «‘.$save_to.'»‘, $output, $return_var);

    //если конвертация прошла успешно

    print «Conversion OK»;

    else print «Ошибка конвертации.

    Проверка записываемой информации в базу данных


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

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function cleanInput($input) <

    ‘@@si’, // Удаляем javascript

    ‘@ ]*?>@si’, // Удаляем HTML теги

    ‘@@siU’, // Удаляем теги style

    ‘@ @’ // Удаляем многострочные комментарии

    $output = preg_replace($search, », $input);

    foreach($input as $var=>$val) <

    $bad_string = «Привет! Какой хороший сегодня день!»;

    // $good_string вернет «Привет! Какой хороший сегодня день!»

    // Также используйте для проверки POST/GET данных

    Создание data URI изображения при помощи PHP

    Вместо предоставления традиционного адреса изображения, вы можете использовать данные изображения в кодировке base64 и добавить их в атрибут src. Это экономит сетевые запросы для каждого изображения, и предотвращает попытки несанкционированного доступа к каталогам с изображениями. Обратите внимание, что в IE7 и ниже, это работать не будет.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> // имя изображения

    // кодируем изображение в base64

    // формат пути к изображению: data:;base64,;

    $src = ‘data: ‘.mime_content_type($image).’;base64,’.$imageData;

    Создание CSV-файла из массива PHP

    Это простая, но эффективная функция для генерации CSV-файла из массива PHP. Функция принимает 3 параметра: данные, разделители полей CSV (по умолчанию это запятая) и ограничители полей CSV (по умолчанию — двойные кавычки).

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function generateCsv($data, $delimiter = ‘,’, $enclosure = ‘»‘) <

    $handle = fopen(‘php://temp’, ‘r+’);

    foreach ($data as $line) <

    fputcsv($handle, $line, $delimiter, $enclosure);

    $contents .= fread($handle, 8192);

    Разархивирование файлов при помощи PHP

    Эта функция принимает два параметра: zip-архив и папку, в которую нужно архив распаковать.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function unzip_file($file, $destination)<

    Цукерберг рекомендует:  Интересное меню для сайта в стиле аккордеона

    $zip = new ZipArchive() ;

    if ($zip->open($file) !== TRUE) <

    die (‘Невозможно открыть архив’);

    // распаковываем содержимое в указанную директорию

    echo ‘Архив распакован’;

    Определить местонахождение по IP

    Этот полезный фрагмент кода поможет вам определить местоположения конкретного IP. Функция принимает один IP в качестве параметра, и возвращает местоположение. Если местоположение не найдено, возвращается UNKNOWN.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function detect_city($ip) <

    if (!is_string($ip) || strlen($ip) 1,

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

    Эта функция будет отсылать вам по электронной почте логи, как только ошибка произойдет на вашем сайте. Очень удобно, чтобы быть всегда в курсе проблем вашего сайта.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function nettuts_error_handler($number, $message, $file, $line, $vars)<

    Ошибка ($number) произошла в строке

    $line в файле: $file.

    $headers = ‘Content-type: text/html; charset=UTF-8’ . «\r\n»;

    // Кому отсылаем email.

    error_log($email, 1, ‘ you@youremail.com’, $headers);

    // Определитесь как реагировать на ошибки (на стороне пользователя)


    // Либо это сообщение об ошибке, или завершить работу скрипта .

    // Этот код прекращает работу скрипта, если ошибка была более чем просто уведомление.

    if ( ($number !== E_NOTICE) && ($number

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

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

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function cleanHTML($html) <

    $html = ereg_replace(» ]*>»,»»,$html);

    Автоматическое добавление водяных знаков на изображение

    Если вы выкладываете ваши собственные изображения на веб-сайтах, то есть вероятность, что вы не захотите видеть их везде в интернете на следующий день. Для предотвращения кражи изображений необходимо заявить о себе как создателе изображений, и добавление водяных знаков на них, как правило, хорошая идея. Эта функция позволяет автоматически добавлять водяные знаки на ваши изображения.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) <

    list($w >
    $image_p = imagecreatetruecolor($width, $height);

    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);

    $black = imagecolorallocate($image_p, 0, 0, 0);

    imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);

    imagejpeg ($image_p, $DestinationFile, 100);

    imagejpeg($image_p, null, 100);

    $WaterMarkText = ‘Ваш копирайт’;

    watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);

    Автоматическое добавление ссылки для email-адресов

    Следующий код ищет адреса электронной почты в строке, и заменяет их на ссылку mailto. Довольно полезно на приватных приложений, но из-за спамеров я не рекомендую использовать это на сайте, в блоге или на форуме.

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> $stringa = «This should format my email address example@domain.com»;

    $text = preg_replace($pattern, $replace, $stringa);

    PHP, Ruby, Python – краткая характеристика трёх языков программирования

    Существует множество языков программирования, предназначенных для выполнения различных задач. Каждый из них характеризуется уникальным набором операторов и особым синтаксисом.

    В сегодняшней статье мы рассмотрим три наиболее популярных языка, применяемых в веб-разработке: PHP , Ruby и Python . Мы узнаем, как они выглядят, чем отличаются друг от друга, насколько и среди какой аудитории они популярны.

    В итоге вы поймёте, какой язык более подходит для решения ваших задач, какой из них стоит учить:

    PHP: самый популярный язык для Интернета

    PHP ( Hypertext PreProcessor , препроцессор гипертекста) – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом ( Rasmus Lerdorf ) в качестве инструмента создания динамических и интерактивных веб-сайтов.

    Этот язык оказался достаточно гибким и мощным, поэтому приобрёл большую популярность и используется в проектах любого масштаба: от простого блога до крупнейших веб-приложений в Интернете:

    Преимущества PHP:

    • является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);
    • легок в освоении на всех этапах;
    • поддерживается большим сообществом пользователей и разработчиков;
    • имеет развитую поддержку баз данных;
    • имеется огромное количество библиотек и расширений языка;
    • может использоваться в изолированной среде;
    • предлагает нативные средства организации веб-сессий, программный интерфейс расширений;
    • является довольно полной заменой проприетарной среды ASP ( Active Server Pages ) от Microsoft ;
    • может быть развёрнут почти на любом сервере;
    • портирован под большое количество аппаратных платформ и операционных систем.

    Недостатки PHP:

    • не подходит для создания десктопных приложений или системных компонентов;

    • имеет слабые средства для работы с исключениями;
    • глобальные параметры конфигурации влияют на базовый синтаксис языка, что затрудняет настройку сервера и разворачивание приложений;
    • объекты передаются по значению, что смущает многих программистов, привыкших к передаче объектов по ссылке, как это делается в большинстве других языков;
    • веб-приложения, написанные на PHP , зачастую имеют проблемы с безопасностью.

    Проекты, использующие PHP:

    • Zend ;
    • Yahoo ;
    • Facebook ;
    • Google
    • NASA ;
    • W3C .

    Популярность:

    Согласно Википедии , на 1 января 2013 года PHP был установлен на более чем 240 миллионах веб-сайтов (39% от всего объёма исследованных) или на 2,1 миллионах веб-серверов.

    Использование

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

    Ruby: интерпретируемый, чистый ООП-язык

    Ruby – динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото . Ruby был создан под влиянием таких языков, как Perl , Eiffel и Smalltalk .

    Он характеризуется динамической типизацией и автоматическим управлением памятью. Язык Ruby используется в веб-разработке в составе открытого веб-фреймворка Rails , чаще называемого Ruby on Rails ( RoR ):

    Преимущества Ruby:

    • открытая разработка;
    • работает на многих платформах;
    • может внедряться в HTML -разметку;
    • относится к языкам программирования сверхвысокого уровня ( VHLL ), то есть обладает высоким уровнем абстракции и предметным подходом в реализации алгоритмов;
    • реализует концептуально чистую объектно-ориентированную парадигму;
    • предоставляет продвинутые методы манипуляции строками и текстом;
    • легко интегрирует в свои программы высокопроизводительные серверы баз данных ( DB2, MySQL, Oracle и Sybase );
    • благодаря VHLL программы на Ruby хорошо масштабируются и легко сопровождаются;
    • простой и чистый синтаксис значительно облегчает программистам первые шаги в обучении этому языку;
    • имеется простой программный интерфейс для создания многопоточных приложений;
    • имеет продвинутые средства для работы с массивами;
    • возможности языка можно расширить при помощи библиотек, написанных на C или Ruby ;
    • зарезервированные слова могут являться идентификаторами, если это не создаёт неоднозначности для парсера;
    • дополнительные возможности для обеспечения безопасности;
    • встроенный отладчик.

    Недостатки Ruby:

    • обучение языку выше начального уровня может оказаться непростым;
    • информационных ресурсов, посвящённых Ruby , явно недостаточно;
    • Ruby менее производителен по сравнению со многими другими языками, применяемыми в веб-разработке;
    • Ruby относительно медленно разрабатывается и развивается.

    Проекты, использующие Ruby:

    • Google SketchUp ;
    • 37signals ;
    • GitHub ;
    • Shopify ;
    • Indiegogo ;
    • Basecamp .

    Популярность

    Согласно официальному сайту Ruby , этот язык входит в десятку наиболее популярных языков программирования. Рост популярности самого языка обусловлен популярностью программных продуктов, написанных на Ruby , в особенности RoR .

    Использование

    Файлы программ, написанных на Ruby , имеют расширение .rb . Эти файлы можно запустить как скрипты командной оболочки при помощи интерпретатора. Например, учитывая, что интерпретатор Ruby находится в /usr/bin :

    Python: язык программирования общего назначения

    Python широко применяется как интерпретируемый язык для скриптов различного назначения (хотя существуют и трансляторы языка Python ).

    Как и Ruby , Python имеет целью приблизить синтаксис реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет программисту уменьшить объём программы. Идея создания данного языка возникла в конце 1980-х и была реализована Гвидо ван Россумом .

    Элегантный дизайн и эффективный, дисциплинирующий синтаксис этого языка облегчают программистам совместную работу над кодом. Python – мультипарадигмальный язык программирования: он позволяет совмещать процедурный подход к написанию кода с объектно-ориентированным и функциональным:

    Преимущества Python:

    • открытая разработка;
    • довольно прост в изучении, особенно на начальном этапе;
    • особенности синтаксиса стимулируют программиста писать хорошо читаемый код;
    • предоставляет средства быстрого прототипирования и динамической семантики;
    • имеет большое сообщество, позитивно настроенное по отношению к новичкам;
    • множество полезных библиотек и расширений языка можно легко использовать в своих проектах благодаря предельно унифицированному механизму импорта и программным интерфейсам;
    • механизмы модульности хорошо продуманы и могут быть легко использованы;
    • абсолютно всё в Python является объектами в смысле ООП , но при этом объектный подход не навязывается программисту.

    Недостатки Python:

    • не слишком удачная поддержка многопоточности;
    • на Python создано не так уж много качественных программных проектов по сравнению с другими универсальными языками программирования, например, с Java ;
    • отсутствие коммерческой поддержки средств разработки (хотя эта ситуация со временем меняется);
    • изначальная ограниченность средств для работы с базами данных;
    • бенчмарки показывают меньшую производительность Python по сравнению с основными Java VM , что создаёт этому языку репутацию медленного.

    Проекты с использованием Python:

    • Yahoo Maps ;
    • Zope Corporation ;
    • Linux Weekly News ;
    • Shopzilla ;
    • Ultraseek .


    Популярность

    Согласно Wikipedia , Python прочно вошёл в 8 наиболее популярных языков программирования по версии TIOBE Programming Community Index . А если не считать отдельно языки с C-подобным синтаксисом ( C++, C#, ObjectiveC, Java и т. д.), то Python является третьим по популярности языком.

    Использование

    Интерпретатор python можно использовать как для запуска скриптов, так и в режиме интерактивной оболочки.

    Наберите в командной строке:

    Потребность в специалистах

    Основываясь на анализе Jobs Tractor , учитывающем более 45000 вакансий разработчиков, опубликованных в Twitter за последний год, потребность в программистах такова:

    • PHP – требуется 8238 человек;
    • Ruby – 2937 человек;
    • Python – 1587 человек.

    Разумеется, статистика – не единственный фактор, который стоит принимать во внимание при изучении языка программирования.

    Какой же язык программирования стоит изучать?

    Большинство программистов скажет вам, что вы сможете сделать что угодно на любом из описанных в этой статье языков программирования. На самом деле, лучшего или худшего варианта здесь нет. Все языки хороши. Но при выборе языка стоит ориентироваться на цели, которых вы хотите достичь.

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

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

    Развитые фреймворки, включающие в себя функции для работы с пользовательскими данными (статьями, темами, постами, фотографиями и т. д.) называются фреймворками управления контентом ( Content Management Framework – CMF ).

    Если добавить к этому элементы интерфейса для конечного пользователя сайта, получается так называемая система управления контентом или CMS ( Content Management System ). CMS позволяет получить сайт с прототипом интерфейса и минимальной функциональностью сразу после установки или после определённой настройки, то есть вообще без программирования.

    При этом большинство CMS предоставляют программисту как программный интерфейс CMF , так и интерфейс для расширения своей функциональности.

    Для PHP разработано много фреймворков и CMS . Вы вполне можете начать работать с какими-то CMS , даже не имея понятия о веб-программировании. Наиболее популярными CMS являются WordPress , Joomla и Drupal .

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

    Разумеется, можно заняться изучением менее популярного фреймворка или CMS , но в этом случае ваши шансы найти готовый пример кода или плагин для реализации какой-либо идеи будут существенно ниже.

    В случае с Python , из множества фреймворков наиболее популярными являются Django и CherryPy . Они дают наиболее полный набор средств для веб-разработки « из коробки ».

    Если вы решили заняться Ruby , то ваш выбор более очевиден: Rails является основным средством веб-разработки на этом языке, хотя существуют и другие, существенно менее популярные фреймворки.

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

    Резюмируя сказанное:

    • PHP – лучший язык для создания динамических веб-страниц;
    • Python – универсальный язык программирования, при помощи которого можно делать любые приложения в диапазоне от интернет-сайтов и десктопных приложений до роботов и системных сервисов;
    • Ruby – наиболее высокоуровневый язык, позволяющий вам уделять меньше внимания деталям интерфейса и организации хранения данных, чтобы сосредоточиться на прикладной задаче.

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

    Данная публикация представляет собой перевод статьи « PHP vs Ruby vs Python: Three Programming Languages in a Nutshell » , подготовленной дружной командой проекта Интернет-технологии.ру

    4 небольших, но весьма полезных функции PHP

    Указанная секция PHP может использоваться в любом месте файла, неограниченное количество раз, вперемежку с обычным текстом html. Чтобы PHP-код начал интерпретироваться, html-страничку (расширение .htm или html) нужно переименовать в .php.

    1. Простой вывод текста

    Текст можно вводить как в одинарных кавычках, так и в двойных. В функции аргументы можно передавать без скобок. Кроме echo можно использовать ключевое слово print. Отличие echo от print в том, что echo может выводить несколько строк, указанных через запятую:

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

    Одинарные кавычки также отключают действие Esc-кодов (см. ниже). Одинарные кавычки увеличивают производительность кода, поэтому их использование предпочтительнее.

    Другой способ определения строк – это использование heredoc-синтаксиса. В этом случае строка должна начинаться с символа , а используется в другой секции . Переменные бывают трех типов — числовой, строковый и логический. Тип определяется неявно в момент присвоения переменной значения. Переменная появляется в момент её назначения. Для проверки факта существования переменной имеется функция IsSet, например (выполните этот код 2 раза, во второй раз раскомментируйте присвоение переменной $index):

    Если переменная не была задана (присвоена), но её значение используется, то переменная автоматически получает значение по умолчанию. Например, если функция, применяемая над переменной, математическая, то переменной присвоится число 0. Переменные, объявленные вне функций, являются глобальными, т. е. видны во всем файле. Переменные, объявленные в теле функции, видны только в этой функции. Операторы PHP, в отличие от функций, констант и переменных, нечувствительны к регистру.

    3. Неявное преобразование типа переменной (в данном примере преобразование строки в число):

    Будет выведен результат 20. Это означает, что интерпретатор преобразовал строку ’10’ в число. При выводе произошло также преобразование — число 20 было преобразовано в строку ’20’. Автоматические преобразования типов упрощают код, но затрудняют поиск логических ошибок при отладке.

    4. Определение констант, использование комментариев.

    В этом примере задана константа и показано использование комментариев. Имя константы тоже чувствительно к регистру. Существующие предопределенные логические константы TRUE и FALSE нечувствительны к регистру. Константы удобно использовать в отдельном файле и подключать его оператором require_once, например, в таком файле могут храниться строковые константы пунктов меню. При случае легко поменять язык сайта, просто включив другой файл с константами.

    5. Другие способы задания комментариев:

    6. Использование перевода строки и параграфа при выводе


    Тут показано использование перевода строки при выводе. Если использовать , то это будет означать конец параграфа, и интервал до новой строки будет увеличен по сравнению с .

    7. Использование Ecs-кодов

    \r
    \n — команда, полностью эквивалентная тегу
    в HTML — перенос строки (\n почему-то не всегда работает).
    \$ — выведет символ доллара.
    \\ — выведет обратную косую черту.
    \» — выведет кавычки.

    8. Пример функции

    Имена функций чувствительны к регистру. Возврат значения переменной из функции возможно с помощью ключевого слова return $имя_переменной. Вместо тега можно использовать тег , но лучше этого не делать.

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

    9. Пример условного оператора, получение переменной окружения.

    Здесь показан пример условного оператора — проверка на адрес клиента, который зашел на сайт. Если его адрес не равен 192.168.0.14, то будет выведен файл ‘postinfo.html’ (тут еще и продемонстрировано действие оператора include). Бывают следующие операторы сравнения:

    оператор описание
    == равно
    === равно и совпадают типы
    != не равно
    меньше больше
    = больше либо равно

    Кроме того, есть очень удобный оператор elseif:

    Тут также продемонстрировано действие оператора include. Бывают еще функции включения include_once, require, require_once. Функции включения с окончанием _once гарантируют, что включение файла будет произведено только один раз, что спасает от логических ошибок в программе — если будет произведена попытка повторного включения, то сгенерируется фатальная ошибка. Функции include и include_once отличаются от require и require_once тем, что первая пара генерирует только предупреждение об ошибке о продолжает выполнение сценария. Вторая пара генерирует фатальную ошибку (дальнейшее выполнение сценария прекращается). Таким образом, include лучше использовать для включения файлов с содержимым (документов), а require для файлов программы PHP.

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

    10. Получение других переменных окружения

    Здесь показан вывод переменных окружения сервера. В одной строке можно использовать несколько операторов, отделенных табуляцией, пробелами и точкой с запятой. Более правильно, конечно, было бы использовать цикл foreach, поскольку перечень переменных для каждого сервера может отличаться (см. пункт 18 Массивы).

    11. Логгер пользователей, которые заходят на сайт

    Файл лога будет называться YYMMDD.txt и писаться в папку logs, которая находится в корневом каталоге сайта (там же, где файл index.html).

    — строки складываются друг с другом не оператором ‘+’, а оператором ‘.’ (кто бы мог подумать).
    — функция date позволяет получать текущее время в отформатированном виде.
    — переменные можно складывать еще и просто перечисляя их в одной строке (. )
    — \r\n используем для добавления перевода строки.
    — $file = fopen(путь_до_файла,»a») используем для открытия файла и получения его дескриптора ($file). «a» означает, что файл будет использоваться для добавления данных.
    — fwrite пишем в файл, fclose его закрываем.

    Возможны другие варианты открытия файла:

    ‘r’ — Открыть только для чтения, помещает указатель на начало файла.
    ‘r+’ — Открыть для чтения и для записи, помещает указатель на начало файла.
    ‘w’ — Открыть только для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не существует, создается новый файл
    ‘w+’ — Открыть для чтения и для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не существует, создается новый файл.
    ‘a’ — Открыть только для записи, помещает указатель на конец файла. Если файл не существует, создается новый файл.
    ‘a+’ — Открыть для чтения и для записи, помещает указатель на конец файла. Если файл не существует, создается новый файл.

    Может также использоваться символ ‘b’ в системах, различающих бинарные и текстовые файлы (не используется в Unix). Если данное значение не имеет смысла, оно игнорируется.

    12. Как запустить PHP-скрипт? Опишу один из способов.

    — в тело html-странички (например, page.html), в любом месте раздела нужно встроить код PHP:

    — файл странички переименовываем из page.html в page.php. В NetObjects Fusion 7.5, в частности, это делается через свойства страницы (Go\Structure View, щелкаем на желто-черную иконку странички, в окошке Properties выбираем закладку Page, жмем кнопку Custom Names. в выпадающем списке File extension: меняем расширение файла на .php, просто вбивая вручную, жмем Ok).
    — убеждаемся, что права на файл page.php равны 755 (права можно просмотреть и изменить либо в командной строке unix, либо в ftp-клиенте с соответствующими возможностями. Я использовал с успехом ftp-клиент, встроенный в Total Commander).
    — теперь в браузере нужно загружать не page.html, а page.php. При этом html-код выполнится без изменений и отобразится в браузере, но дополнительно веб-сервер выполнит и PHP-код, заключенный между тегами и ? > . Отобразится как HTML-код, так и то, что будет выведено командой echo в коде PHP. Этот код может многое — модифицировать выводимую страницу, обращаться к базам данных, писать и читать файлы на web-сервере и многое другое. Если просмотреть исходный код страницы page.php в браузере (правая кнопка — View Source), то код PHP виден не будет (т. е. сервер отдает пользователю уже откомпилированную страничку).

    13. Как узнать версию PHP, которая установлена на сайте? Функция phpinfo() выводит красивую и подробную информацию об установленном PHP.

    14. Функция Error_Reporting() меняет параметры вывода сообщений об ошибке.

    Если перед функцией поставить символ @, например @print(), то в случае ошибки в этой функции сообщение об ошибке не выведется.

    15. Блок кода задается так же, как в C, с помощью <>.

    16. Цикл for задается так же, как в C:

    Отличие в том, что инициализировать можно несколько переменных:

    Кроме того, можно делать несколько проверок, но это не имеет смысла, поскольку срабатывает только последняя:

    Например, так получим бесконечный цикл:

    А так цикл ни разу не выполнится:

    Кроме того, можно делать несколько изменений переменных, опять же через запятую.

    17. exit() прекращает работу сценария — дальнейший HTML-код не загрузится и не отобразится. Оператор die(«сообщение») делает то же самое, но выводит сообщение.

    18. Функция для поиска и замены с помощью регулярного выражения

    pattern регулярное выражение для поиска, чего будем менять
    replacement чем заменяем
    subject строка, в которой производится поиск и замена
    limit сколько раз производим замену (необязательный параметр)
    mixed псевдотип; говорит о том, что параметр может принимать множество (но не обязательно все) типов.

    19. Массивы

    Присвоение элементам значений:

    В этом случае последний элемент массива получит индекс 21.
    Можно в качестве индексов использовать символы:

    Можно создавать массивы с помощью функции array:

    С помощью функции array можно создавать массивы с символьными индексами:

    Цикл foreach позволяет вывести все элементы массива:

    А так с помощью foreach можно получать значение индекса:

    Функция count позволяет получить количество элементов массива:

    Пример, который выводит все переменные окружения сервера:


    Этот код не такой громоздкий, как был приведен ранее (п. 10), и выводит весь список существующих переменных. Коды & nbsp ; выводят пробелы, которые не обрезаются до одного.

    Другие предопределенные массивы:

    $GLOBALS Все глобальные переменные скрипта (включает все остальные).
    $_SERVER Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).
    $_GET Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).
    $_POST Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).
    $_COOKIE Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).
    $_FILES Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива $HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите «Загрузка методом POST».
    $_ENV Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
    $_REQUEST Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0. Смотрите также import_request_variables().
    $_SESSION Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива $HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется). Дополнительную информацию смотрите в разделе Функции обработки сессии.

    20. Строки

    Функции для работы со строками и символами:

    mixed str_replace (mixed search, mixed replace, mixed subject[, int &count]) возвращает строку, в subject, в которой все search заменены на replace. В переменной count подсчитывается количество замен.

    int ord (string string) возвращает ASCII-код первого символа в строке.

    string chr (int ascii) возвращает строку из одного символа, код которого задан аргументом ascii.

    21. Удобные функции для работы с массивами

    array split (string pattern, string string [, int limit]) позволяет получить массив из строки string, помещая её по частям, границы которых выделяются разделителем pattern. При этом pattern может состоять как из одного символа, так и из нескольких, а также из регулярного выражения (подробнее см. help). В результирующие элементы получаемого массива pattern не попадает. Функцию удобно использовать для разделения текста на отдельные строки, для разбиения html-кода на блоки с помощью тегов, для обработки CSV-таблиц и т. д. Если указан необязательный элемент limit, то массив будет состоять из не более чем limit элементов. В случае ошибки функция возвращает FALSE. Пример (открывается простой текстовый файл, каждая строка которого состоит из ссылки, и этими ссылками по разделителю \r\n заполняется массив $good_links):

    bool in_array (mixed needle, array haystack [, bool strict]) ищет в массиве haystack значение needle и возвращает TRUE в случае удачи, FALSE в противном случае. Чрезвычайно удобная функция, одной строкой заменяющая цикл поиска по элементам массива. Если третий параметр strict установлен в TRUE, тогда функция in_array() также проверит соответствие types параметра needle и соответствующего значения массива haystack. Если needle — строка, сравнение будет регистрозависимым. Пример:

    7 функций php для начинающих

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

    Функция 1: array_rand

    Очень полезная функция, которая возвращает случайны элемент массива. Все что требуется сделать это в качестве параметра передать ей массив, в результате чего в ответ будет получен рандомный элемент массива.

    Можно конечно воспользоваться функциями rand или mt_rand для подстановки их в качестве ключа с указанием диапазона (пример: $sites(rand(0,3)); ), но это не кашерно и работает гораздо медленнее чем array_rand.

    Функция 2: strip_tags

    Когда я только начинал программировать, это была одна из самых моих любимых функций, я её пихал куда только мог. Суть её работы предельно проста, она вырезает из текста все возможные HTML теги. Её использование может быть очень удобным при обработке входящих данных, например комментариев от пользователя. Кроме всего прочего будут вырезаны все скрипты JavaScript, что не менее важно.

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

    Функция 3: strftime

    Язык можно сломать. Собственно функция, форматирования вывода времени и даты в нужном нам виде. В качестве аргументов принимает маску форматирования и временную метку в UNIX формате.
    Кстати, все возможные маски также сложно запомнить как и название функции с первого раза, но тем не менее полезность её весьма очевидна.

    Функция 4: basename

    Функция принимающая в качестве аргумента полный путь к файлу и возвращающая в ответ лишь название самого файла. Например вам требуется показать название файла пользователю, но при этом не показывать его полный путь. Кроме всего прочего, функция принимает второй аргумент в качестве расширения файла, в результате чего, она возвращает только имя файла без расширения.

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

    Функция 5: list

    Очень интересная функция, суть её задачи заключается в присвоении элементов массива указанному списку переменных. Причем весь процесс происходить через присвоение. Например, таким образом, передав данной функции в качестве параметров две переменные и последующее присвоение данной конструкции в качестве значения — массива с данными, всем ранее переданным переменным будут присвоены соответствующие значения массива, в поочередном порядке.
    Словами несколько сложновато передать всю суть, смотрите пример ниже.

    Запись может быть и следующего вида: (порадуйте своих друзей)

    Функция 6: range

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

    Функция принимает и третий аргумент, а именно шаг с которым необходимо формировать значения.

    Функция 7: isset

    Ну и напоследок, функция проверяющая наличие переменной, а именно установлено ли её значение во что нибудь отличное чем NULL. В качестве аргумента передается переменная и если её значение не равно NULL, то функция возвращает true, в противном случае false. Удобно при проверке глобальных массивов, переданных от пользователя ($_GET,$_POST) на наличие определенных установленных элементов массива.

    Данную функция удобно использовать в следующих конструкциях: (чаще всего я так и делаю)

    Ну что-же, на этом пост о семи полезных php функций для новичков, закончен. Надеюсь вы узнали немного нового, прочитав его, если это так, то возможно за ним последует еще серия аналогичных постов с обзором других не менее интересных и полезных функций php.

    Похожие записи

    • Оптимизация загрузки CSS и JavaScript на странице (2)
    • Автоматическое обновление jQuery на PHP (1)
    • PHP скачивание файлов по списку URL (5)
    • Геотаргетинг и геолокация на PHP (3)
    • Конвертирование курса валюты на PHP + google (0)
    • Валидация данных кредитной карты. PHP CC Val > (0)
    • Обновленная авторизация Вконтакте (PHP, CURL) (4)

    3 комментария to “7 функций php для начинающих”


    Очень занимательный материал на вашем сайте, статей 10 открыл для прочтения. Добавлю свои любимые функции
    unset — удаляем ))))
    set_time_limit(0) время выполнения скрипта не ограниченно
    foreach — перебор ассоциативного массива
    ob_start() задержка вывода, вывод в буфер.
    самое главное var_dump() без него почти ни один скрипт не обходится в процессе создания )))

    на isset редко проверяю так как писать лень лишние букавы ))

    if (!$_GET[‘query’]) <
    // get results and display them
    > else <
    // show some default content
    >

    Полезные функции

    • Функция getType – вернет тип переменной (NULL, integer, string, double, boolean). Применяется на случай, если не знаем какого типа переменная.
    • Функция setType(имя переменной, ‘тип’) — конвертирует переменную в другой тип. Эта функция применяется редко.

    Есть опасность, когда в функции, например, $z есть число и строка ($z=’10apples’). После преобразования в число ($z=10), и затем когда ее обратно преобразуем в строку, то ‘apples’ теряется, остается только число ($z=’10’).

    Чтобы избежать этой опасности, применяют приведение типа, чтобы строка не терялась. Если в функции setType PHP забирался внутрь ячейки и окончательно ее конвертировал, то здесь он берет копию этого значения, привел ее к числу, но в самой переменной $a осталось ’10 apples’.

    Удобные функции PHP для работы с MySQL

    В статье предлагается несколько простых функций языка PHP для взаимодействия с СУБД MySQL, которые могут значительно облегчить повседневную работу программистов.

    Работа с MySQL силами встроенных функций PHP (таких как mysql_query(), mysql_fetch_assoc() и др.) не является чем-то сложным. Однако синтаксические конструкции, требуемые для обработки результатов запроса, обычно занимают пару лишних строк кода. Приходится либо повторять такой код каждый раз, либо использовать специальные библиотеки, которые призваны эту задачу автоматизировать. Эти библиотеки, однако, часто берут на себя дополнительные (обычно довольно бесполезные) задачи, в результате чего интерфейс их усложняется и такими библиотеками оказывается неудобно пользоваться.

    Предлагаемые в настоящей статье функции позволяют решать подавляющее большинство задач по отправке и обработке результатов запросов к серверу MySQL, используя для этого очень небольшое количество программного кода. Кроме того, легко включается режим использования улучшенного модуля mysqli, что актуально в связи с рекомендациями по переходу с оригинального API MySQL, который с версии PHP 5.5.0 будет считаться устаревшим.

    Код функций можно скачать одним файлом.

    mysql_q() — отправка запроса и слежение за ошибками

    Нередко оказывается, что запрос к MySQL содержит ошибку, из-за чего приложение неправильно работает. Функция mysql_query() при этом ведет себя молчаливо, не выводя никаких сообщений. Поэтому поиск места, где ошибка произошла, часто становится проблемой.

    Функция mysql_q() помогает быстро найти проблемное место — в случае ошибки в запросе она выводит на экран сообщение с информацией об ошибке и прекращает работу скрипта 2 .

    $query = «SELECT NOW» ; // забыли поставить скобки после NOW()

    mysql_query ( $query ) ; // ничего не происходит

    mysql_q ( $query ) ; // а вот mysql_q() проинформирует об ошибке

    После работы mysql_q() на экране появится сообщение:

    MySQL error in file /usr/home/www/наш_сайт/test.php at line 7 (function mysql_q):
    Unknown column ‘NOW’ in ‘field list’

    Функция mysql_q() пригодна для любых запросов (не только SELECT):

    Подстановка параметров в запрос

    Есть возможность подстановки в запрос элементов ассоциативного массива. Для этого запрос нужно составить с использованием специальных меток и в качестве второго аргумента передать функции mysql_q() массив замены:

    $sql = »
    INSERT INTO products
    SET
    > price = :price,
    name = :name
    » ;

    $params = array (
    ‘id’ => 12 ,
    ‘price’ => 10000 ,
    ‘name’ => ‘Телевизор’ ,
    ) ;

    mysql_q ( $sql , $params ) ;

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

    Если метке соответствует не скалярная величина, а массив, его элементы будут экранированы и подставлены в запрос через запятую. Код вида

    $sql = »
    SELECT * FROM products
    WHERE id IN (:ids)
    OR brand = :brand
    » ;

    $params = array (
    ‘brand’ => ‘Полёт’ ,
    ‘ids’ => array (
    5 ,
    115 ,
    220 ,
    ‘сюда случайно попала строка’ ,
    NULL
    ) ,
    ) ;

    mysql_q ( $sql , $params ) ;

    В итоге даст запрос

    Подстановка параметров в запрос поддерживается всеми функциями библиотеки (см. ниже).

    Получить текст запроса после подстановки можно с помощью функции
    mysql_substitute ( $sql , $params ) ; (обычно это бывает полезно при отладке).

    Далее речь пойдет о функциях для обработки запросов, которые возвращают результат — это, прежде всего, запросы SELECT, а также некоторые другие. Для отправки запросов все эти функции используют mysql_q().

    В примерах будет использована вот такая таблица:

    mysql_getcell() — получение одной ячейки

    Функция mysql_getcell() предназначена для получения результатов запросов, которые состоят из одной строки и одного столбца (такие запросы называются скалярными). Результаты mysql_getcell() возвращает в виде скалярной переменной:

    Если в запросе встретится ошибка — в сообщении будет указано место, откуда вызывается mysql_getcell() 3 :

    MySQL error in file /usr/home/www/наш_сайт/html/test.php at line 2 (function mysql_getcell):
    Unknown column ‘NOW’ in ‘field list’

    Параметры для подстановки в запрос можно передавать вторым аргументом.

    mysql_getrow() — получение одной строки

    Функция mysql_getrow() служит для получения результатов запросов, которые состоят из одной строки. mysql_getrow() вернёт результат запроса в виде одномерного ассоциативного массива, ключами которого являются имена колонок, а значениями — то, что хранится в соответствующих ячейках:

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

    mysql_getcolumn() — получение одного столбца

    Функция mysql_getcolumn() служит для получения результатов запросов, которые состоят из нескольких строк и одного столбца. mysql_getcolumn() возвращает результат запроса в виде одномерного массива:

    Можно и запросы типа таких:

    Иногда бывает нужно иметь такой массив, ключи которого содержат значения какого-нибудь уникального поля (столбца) соответствующих записей. С помощью mysql_getcolumn() сделать это очень легко — нужно добавить это поле в запрос и указать в качестве второго аргумента TRUE. Ключами становятся значения того поля, которое указано в запросе первым:

    Параметры для подстановки передаются третьим аргументом.

    mysql_gettable() — для табличных запросов

    Табличным называется запрос, результат которого содержит более одной строки и более одного столбца. Функция mysql_gettable() возвращает его в виде двумерного массива:

    Есть возможность записать в ключи массива значения уникального поля. Для этого поле нужно добавить в запрос (если оно уже не присутствует в неявном виде как часть *) и указать имя поля вторым аргументом 4 :

    Параметры для подстановки передаются третьим аргументом.

    mysql_write_row()

    Одна из самых распространенных задач — это вставка в таблицу новой записи или обновление уже существующей по уникальному ключу с предварительным экранированием передаваемых данных. Эту задачу позволяет решать функция mysql_write_row().

    Простой INSERT

    Для вставки записи в таблицу качестве аргументов функции требуются имя таблицы и ассоциативный массив данных для вставки, в котором ключи соответствуют именам колонок. Функция вернёт идентификатор вставленной записи (см. mysql_insert_ >
    // Допустим, есть пустая таблица вида
    // CREATE TABLE goods (
    // id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    // name VARCHAR(255),
    // price DECIMAL(5),
    // description TEXT
    // );

    // Хотим вставить вот такую строку:

    $data = array (
    «name» => «Чайник» ,
    «price» => 3000 ,
    «description» => «Хороший и дорогой чайник. ‘ — кавычку экранировать не требуется»
    ) ;

    echo mysql_write_row ( ‘goods’ , $data ) ; // вернет 1
    ?>

    Простой UPDATE

    mysql_write_row() можно использовать и для обновления записей таблицы. Для этого ей нужно в качестве третьего аргумента передать значение уникального ключа. Результат работы функции в этом случае — количество изменившихся записей в таблице (см. mysql_affected_rows):

    $data = array (
    «description» => «Самый лучший чайник» ,
    «price» => 3500
    ) ;

    // Следующие две записи идентичны:
    echo mysql_write_row ( ‘goods’ , $data , array ( ‘id’ => 3 ) ) ; // вернет 1, т.к. изменилась одна строка

    // скалярная величина по умолчанию считается относящейся к столбцу ‘id’
    echo mysql_write_row ( ‘goods’ , $data , 3 ) ; // вернет 0, т.к. данные остались прежними
    ?>

    Обновлять можно также по условию на несколько колонок — в этом случае массив с ключами будет содержать несколько элементов. При этом одна и та же колонка может фигурировать и в части SET, и в части WHERE: код

    INSERT . ON DUPLICATE KEY UPDATE

    При вставке записей можно включать режим ON DUPLICATE KEY UPDATE. Для этого четвертым аргументом нужно передать ‘DUPLICATE’, а второй и третий должны быть составлены как для случая обычного UPDATE:

    Такой код приведёт к запросу

    Бывают ситуации, когда удобнее передать все необходимые данные в $data, а в $unique_keys — указать, какие ключи из них относятся к уникальным полям:

    $all_data = array (
    «id» => 3 ,
    «description» => «Самый лучший чайник» ,
    «price» => 3500
    ) ;
    $unique = array ( ‘id’ ) ; // будет исключен из части ON DUPLICATE KEY UPDATE

    mysql_write_row ( ‘goods’ , $data , $unique , ‘DUPLICATE’ ) ;
    // Приведёт к такому же запросу, как в предыдущем примере

    INSERT IGNORE и REPLACE

    Вставку записи можно проводить также в режимах INSERT IGNORE и REPLACE — их в таком случае нужно указать четвертым аргументом 5 :

    mysql_escape()

    Функция mysql_escape() экранирует переменную, учитывая её тип:

    • строка будет экранирована 6 и заключена в одинарные кавычки
    • число будет оставлено без изменений
    • вместо NULL в строку запроса будет вставлено выражение NULL
    • во всех остальных случаях применяется функция intval()

    Это позволяет экранировать все переменные единообразно:

    $id = 5 ;
    $name = «O’Reilly» ;

    $sql = »
    SELECT .
    WHERE > . mysql_escape ( $id ) . »
    AND name = » . mysql_escape ( $name ) . «;
    » ;
    // В результате получится запрос
    // SELECT .
    // WHERE >
    // AND name = ‘O\’Reilly’

    Если функции передан массив, то она вернет список его экранированных элементов, перечисленных через запятую. Это весьма удобно при составлении запросов с IN:

    $values = array ( 10 , NULL , «строка» , «Д’Артаньян» ) ;

    $sql = «SELECT . WHERE col IN (» . mysql_escape ( $values ) . «)» ;
    // Получится запрос
    // SELECT . WHERE col IN (10, NULL, ‘строка’, ‘Д\’Артаньян’)

    Поддержка mysqli

    Изначально функции были написаны на основе оригинального API MySQL, но они могут работать и в режиме совместимости с «улучшенным» модулем — mysqli. Добиться этого очень просто: нужно, чтобы к моменту вызова функций в глобальной области видимости существовала переменная $mysqli, содержащая соответствующий объект:

    Никаких других дополнительных действий не требуется.

    1. ▲ В примерах предполагается, что уже установлено соединение с сервером MySQL и выбрана база данных для работы.

    2. ▲ А также отправляет веб-клиенту HTTP-заголовок с кодом 500, который сигнализирует о том, что на сервере произошел сбой.

    3. ▲ Вид сообщений об ошибках таков и для других функций; речь о них пойдет в статье далее.

    4. ▲ Столбец, указываемый во втором аргументе, обязательно должен присутствовать в результате запроса. Если для этого столбца используется псевдоним, то вторым аргументом нужно указывать именно псевдоним:

    5. ▲ Следует отметить, что успешный REPLACE по уникальному ключу, отличному от автоинкрементного поля, приведёт к обновлению последнего так же, как если бы была добавлена новая запись.

    6. ▲ Экранирование проводится с помощью встроенных функций библиотек MySQL — mysql_real_escape_string или mysqli_real_escape_string() (в зависимости от того, включен ли режим совместимости с модулем mysqli).

    7 функций php для начинающих

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

    Функция 1: array_rand

    Очень полезная функция, которая возвращает случайны элемент массива. Все что требуется сделать это в качестве параметра передать ей массив, в результате чего в ответ будет получен рандомный элемент массива.

    Можно конечно воспользоваться функциями rand или mt_rand для подстановки их в качестве ключа с указанием диапазона (пример: $sites(rand(0,3)); ), но это не кашерно и работает гораздо медленнее чем array_rand.

    Функция 2: strip_tags

    Когда я только начинал программировать, это была одна из самых моих любимых функций, я её пихал куда только мог. Суть её работы предельно проста, она вырезает из текста все возможные HTML теги. Её использование может быть очень удобным при обработке входящих данных, например комментариев от пользователя. Кроме всего прочего будут вырезаны все скрипты JavaScript, что не менее важно.

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

    Функция 3: strftime

    Язык можно сломать. Собственно функция, форматирования вывода времени и даты в нужном нам виде. В качестве аргументов принимает маску форматирования и временную метку в UNIX формате.
    Кстати, все возможные маски также сложно запомнить как и название функции с первого раза, но тем не менее полезность её весьма очевидна.

    Функция 4: basename

    Функция принимающая в качестве аргумента полный путь к файлу и возвращающая в ответ лишь название самого файла. Например вам требуется показать название файла пользователю, но при этом не показывать его полный путь. Кроме всего прочего, функция принимает второй аргумент в качестве расширения файла, в результате чего, она возвращает только имя файла без расширения.

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

    Функция 5: list

    Очень интересная функция, суть её задачи заключается в присвоении элементов массива указанному списку переменных. Причем весь процесс происходить через присвоение. Например, таким образом, передав данной функции в качестве параметров две переменные и последующее присвоение данной конструкции в качестве значения — массива с данными, всем ранее переданным переменным будут присвоены соответствующие значения массива, в поочередном порядке.
    Словами несколько сложновато передать всю суть, смотрите пример ниже.

    Запись может быть и следующего вида: (порадуйте своих друзей)

    Функция 6: range

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

    Функция принимает и третий аргумент, а именно шаг с которым необходимо формировать значения.

    Функция 7: isset

    Ну и напоследок, функция проверяющая наличие переменной, а именно установлено ли её значение во что нибудь отличное чем NULL. В качестве аргумента передается переменная и если её значение не равно NULL, то функция возвращает true, в противном случае false. Удобно при проверке глобальных массивов, переданных от пользователя ($_GET,$_POST) на наличие определенных установленных элементов массива.

    Данную функция удобно использовать в следующих конструкциях: (чаще всего я так и делаю)

    Ну что-же, на этом пост о семи полезных php функций для новичков, закончен. Надеюсь вы узнали немного нового, прочитав его, если это так, то возможно за ним последует еще серия аналогичных постов с обзором других не менее интересных и полезных функций php.

    Похожие записи

    • Оптимизация загрузки CSS и JavaScript на странице (2)
    • Автоматическое обновление jQuery на PHP (1)
    • PHP скачивание файлов по списку URL (5)
    • Геотаргетинг и геолокация на PHP (3)
    • Конвертирование курса валюты на PHP + google (0)
    • Валидация данных кредитной карты. PHP CC Val > (0)
    • Обновленная авторизация Вконтакте (PHP, CURL) (4)

    3 комментария to “7 функций php для начинающих”

    Очень занимательный материал на вашем сайте, статей 10 открыл для прочтения. Добавлю свои любимые функции
    unset — удаляем ))))
    set_time_limit(0) время выполнения скрипта не ограниченно
    foreach — перебор ассоциативного массива
    ob_start() задержка вывода, вывод в буфер.
    самое главное var_dump() без него почти ни один скрипт не обходится в процессе создания )))

    на isset редко проверяю так как писать лень лишние букавы ))

    if (!$_GET[‘query’]) <
    // get results and display them
    > else <
    // show some default content
    >

    Небольшой, но функциональный сайт

    1. Какой метод лучше использовать при создании главного контроллера сайта? Идею хранить столь маленький объем в БД сразу отмел. Поэтому первый вариант сделал на $_SERVER[‘REQUEST_URI’], не понравилось. Показалось, что слишком громоздко и тупо. Сейчас планирую сделать одну единственную страницу с регистрацией/авторизацией, а по мере надобности подгружать туда требуемый контент с помощью js.

    А целесообразно ли вообще использовать БД и $_SERVER[‘REQUEST_URI’] на крохотном сайте, если он состоит буквально из двух страниц (регистрация/авторизация и собственно закрытый контент)?

    Написал класс для вывода на экран системных сообщений. Работать-то оно работает, но правильно ли так делать. Или лучше использовать AJAX?

    Я не особо силен в плане ООП, если что ругайте.

    AJAX – это доп. примочка класса свистоперделок. Да иногда бывает удобно разгрузить традиционный способ обмена данными, повесив часть вспомогательных функций на AJAX, но основной функционал лучше реализовать традиционными средствами.

  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих