Разделы
vvShop | RSS © 2008 – 2017
Контакты
email: igor@veselov.sumy.ua
skype: utz0r2
» » » Страница 48

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


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

Простой способ реализации списка структуры папок
$path = "/home/user/public/foldername/";
$dir_handle = @opendir($path) or die("Unable to open $path");

while ($file = readdir($dir_handle)) {
    if($file == "." || $file == ".." || $file == "index.php" )
        continue;
        echo "<a href=\"$file\">$file</a><br />";
    }
closedir($dir_handle);


Создание защищенной паролем страницы
<?
$username = "someuser";
$password = "somepassword";

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {?>
<h1>Login</h1>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <p><label for="txtUsername">Username:</label>
      <br><input type="text" title="Enter your Username" name="txtUsername"></p>

      <p><label for="txtpassword">Password:</label>
      <br><input type="password" title="Enter your password" name="txtPassword"></p>
  <p><input type="submit" name="Submit" value="Login"></p>
</form>
<?} else {?>
    <p>This is the protected page. Your private content goes here.</p>
<?}?>


Искать файлы, используя шаблоны
$files = glob('*.php');
print_r($files);
/* Выдаст что-то типа:
Array
(
    [0] => phptest.php
    [1] => pi.php
    [2] => post_output.php
    [3] => test.php
)
*/


Сериализация
// a complex array
$myvar = array(
    'hello',
    42,
    array(1,'two'),
    'apple'
);

// convert to a string
$string = serialize($myvar);

echo $string;
/* prints
a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
*/

// you can reproduce the original variable
$newvar = unserialize($string);

print_r($newvar);
/* prints
Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)
*/

Функция создания цветовой палитры на PHP


Функция создания цветовой палитры на PHP
<?php 
function colorPalette($imageFile, $numColors, $granularity = 5)
{
   $granularity = max(1, abs((int)$granularity));
   $colors = array();
   $size = @getimagesize($imageFile);
   if($size === false)
   {
      user_error("Unable to get image size data");
      return false;
   }
   $img = @imagecreatefromjpeg($imageFile);
   if(!$img)
   {
      user_error("Unable to open image file");
      return false;
   }
   for($x = 0; $x < $size[0]; $x += $granularity)
   {
      for($y = 0; $y < $size[1]; $y += $granularity)
      {
         $thisColor = imagecolorat($img, $x, $y);
         $rgb = imagecolorsforindex($img, $thisColor);
         $red = round(round(($rgb['red'] / 0x33)) * 0x33);
         $green = round(round(($rgb['green'] / 0x33)) * 0x33);
         $blue = round(round(($rgb['blue'] / 0x33)) * 0x33);
         $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue);
         if(array_key_exists($thisRGB, $colors))
         {
            $colors[$thisRGB]++;
         }
         else
         {
            $colors[$thisRGB] = 1;
         }
      }
   }
   arsort($colors);
   return array_slice(array_keys($colors), 0, $numColors);
}
?>
<div align="center"><img src="58.jpg" alt="58.jpg"/><br/><br/></div>
<?php
// пример использования:
$palette = colorPalette('58.jpg', 10, 5);
echo "<table align='center'>\n";
foreach($palette as $color)
{
   echo "<tr><td style='background-color:#$color;width:2em;'>&nbsp;</td><td>#$color</td></tr>\n";
}
echo "</table>\n";
Обязательно наличие модуля GD

СМОТРЕТЬ ДЕМО

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


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

Функция для обработки текста
function ProcessText($text)
{
    $text = trim($text); // удаляем пробелы по бокам
    $text = stripslashes($text); // удаляем слэши
    $text = htmlspecialchars($text); // переводим HTML в текст
    $text = preg_replace("/ +/", " ", $text); // множественные пробелы заменяем на одинарные
    $text = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $text); // убираем лишние переводы строк (больше 1 строки)
    $test = nl2br ($text); // заменяем переводы строк на тег
    $text = preg_replace("/^\"([^\"]+[^=><])\"/u", "«»", $text); // ставим людские кавычки
    $text = preg_replace("/(«){2,}/","«",$text); // убираем лишние левые кавычки (больше 1 кавычки)
    $text = preg_replace("/(»){2,}/","»",$text); // убираем лишние правые кавычки (больше 1 кавычки)      
    $text = preg_replace("/(\r\n){2,}/u", "</p><p />", $text); // ставим абзацы
    return $text; //возвращаем переменную
}


Функции для работы с файлами
// Извлечение контента файла
function Get($file)
{
      return file_get_contents($file);
}


// Сохранение контента в файл
function Save($file, $content)
{
      return (file_put_contents($file, stripslashes($content)));
}


Функция для отправки письма
// Входные данные: адрес получателя, адрес отправителя, тема письма, текст письма, имя отправителя
function SendEmail($toEmail, $fromEmail, $subject, $content, $from)
{
      // Обработка темы
      $subject = "=?utf-8?b?" . base64_encode($subject) . "?=";
      // Формирование заголовков
      $headers = "MIME-Version: 1.0\r\n";
      $headers .= "Content-type: text/html; charset=utf-8\r\n";
      $headers .= "From: =?utf-8?b?" . base64_encode($from) . "?= ";
      return (mail($toEmail, $subject, $content, $headers));
}


Фильтруем нулевой байт
$mode = preg_replace('/
<?
$url = 'rss.xml';       //адрес RSS ленты

$rss = simplexml_load_file($url);       //Интерпретирует XML-файл в объект

//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
        echo '<h1>'.$item->title.'</h1>';       //выводим на печать заголовок статьи
        echo $item->description;        //выводим на печать текст статьи
}
?>
Данный код выведет заголовки и тексты статей из RSS ленты.

XML Parser Functions - это стандартные функции PHP для работы с XML доступные начиная c 4-ой версии PHP. Продемонстрирую пример:
<?
$url = 'rss.xml';       //адрес RSS ленты
$xml = xml_parser_create();     //создаёт XML-разборщик
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);  //устанавливает опции XML-разборщика
xml_parse_into_struct($xml, file_get_contents($url), $element, $index); //разбирает XML-данные в структуру массива
xml_parser_free($xml);  //освобождает XML-разборщик

$count = count($index["TITLE"])-1;      //число проходов цикла.

for ($i=0; $i < $count; $i++) {
        echo '<h1>'.$element[$index["TITLE"][$i+1]]["value"].'</h1>';           //выводим на печать заголовок статьи
        echo $element[$index["DESCRIPTION"][$i+1]]["value"];            //выводим на печать текст статьи
}
?>
Мы получаем интересующие нас содержимое элементов RSS. Но тут уже нужно разобраться с массивами которые создает XML разборщик.

Приведу небольшой пример парсинга RSS обычным процедурным PHP кодом, тут за парсинг отвечает функция preg_match_all(), которая выполняет глобальный поиск шаблона в строке. Данный пример не совершенен и парсит только титлы и дескрипшены у RSS:
<?
$url = 'rss.xml';       //адрес RSS ленты

$rss = @file_get_contents($url);        //получаем содержимое RSS лент в виде одной строки

if ($rss) {    
        preg_match_all("/title>[^>]+>/", $rss, $title);         //парсим титлы
        preg_match_all("/<description>[^<]+</description>/", $rss, $description);              //парсим дескрипшены
        
        $count = count($title[0])-1;    //число проходов цикла.
        
        for ($i=0; $i < $count; $i++) {
                echo '<h1>'.substr($title[0][$i+1], 6, -8).'</h1>';             //выводим на печать заголовок статьи
                echo substr($description[0][$i], 13, -14);              //выводим на печать текст статьи
        }
} else {
        echo '<font color="red">Ошибка парсинга '.$url.'</font>';      

//выводим ошибку если file_get_contents() вернула false
}
?>
Таким же способом можно и отпарсить остальные элементы RSS ленты, главное написать правильно регулярку.

RSS ленты как правило находятся в кодировке UTF-8, при парсинге русского текста тремя способами описанными выше, нам на экран выводятся кракозябры. Все потому, что тест к нам приходит в кодировке UTF-8. Для того что бы вывести нормальные РУССКИЕ буквы нужно перекодировать спарсеный текст из кодировки UTF-8 в Windows-1251. Для этих целей в PHP существует функция iconv(), но она доступна не на всех серверах и чтобы избежать дальнейших проблем с вашим RSS парсером советую использовать самописную функцию перекодировки. Вникать в тонкости кодировок и разбираться как из одной кодировки получается другая думаю вам не хочется, так же не хотелось и мне. Немного погуглив я нашел замечательную функцию перекодировки из UTF-8 в Windows-1251 и обратно, предоставляет ее некий товарищ E64F. Возможно конечно он тоже ее где-то слямзил, но это не так важно, важно то что она мне очень понравилась по сравнению с другими нагуглеными функциями. Выкладываю функцию и пример ее использования:
<?
echo utf8_convert($str, "w");   //перекодирует $str из UTF-8 в Windows-1251 и выведет на экран
{
   static $conv = '';
   if (!is_array($conv))
   {
      $conv = array();
      for ($x=128; $x <= 143; $x++)
      {
         $conv['utf'][] = chr(209) . chr($x);
         $conv['win'][] = chr($x + 112);
      }
      for ($x=144; $x<= 191; $x++)
      {
         $conv['utf'][] = chr(208) . chr($x);
         $conv['win'][] = chr($x + 48);
      }
      $conv['utf'][] = chr(208) . chr(129);
      $conv['win'][] = chr(168);
      $conv['utf'][] = chr(209) . chr(145);
      $conv['win'][] = chr(184);
   }
   if ($type == 'w')
   {
      return str_replace($conv['utf'], $conv['win'], $str);
   }
   elseif ($type == 'u')
   {
      return str_replace($conv['win'], $conv['utf'], $str);
   }
   else
   {
      return $str;
   }
}
?>
/s', '', $mode);


И еще чуток
     $result = stripslashes($result); // удаляем слэши
    $result = str_replace('#39;', '', $result); // удаляем одинарные кавычки
    $result = str_replace('&quot;', '', $result); // удаляем двойные кавычки
    $result = str_replace('&amp;', '', $result); // удаляем амперсанд
    $result = preg_replace('/([?!:^~|@№$–=+*&%.,;\[\]&lt;&gt;()_—«»#\/]+)/', '', $result); // удаляем недоспустимые символы
    $result = trim($result); // удаляем пробелы по бокам
    $result = preg_replace('/ +/', '-', $result); // пробелы заменяем на минусы
    $result = preg_replace('/-+/', '-', $result); // удаляем лишние минусы
    $result = preg_replace('/([-]*)(.+)([-]*)/', '\2', $result); // удаляем лишние минусы

Скрипт jqUploader AJAX


Скрипт jqUploader AJAX

Официальный сайт там же и скачать

Парсинг RSS и все такое


Ясен пень, что поисковики не любят дублирующий контент. Но иногда нужно, хоть тресни.

SimpleXML – это расширение для PHP5 устанавливаемое в него по умолчанию, представляет самый простой и элегантный способ обработки XML файлов. Это и наиболее предпочтительный способ, но он стал доступным только в 5 версии PHP. Тут нет ничего проще, данный код наглядно показывает как просто парсить RSS ленты средствами SimpleXML:
#pre#Функция utf8_convert() принимает 2 параметра: $str – наша строка которую нужно перекодировать и $type – в какую кодировку нужно кодировать (“w” – из utf в win, “u” – из win в utf). Как это применить к нашим 3-м способам парсинга RSS думаю разберетесь, если хоть немного знаете PHP.

Ajax зум + Галлерея + Jquery


Очень мощный скрипт www.ajax-zoom.com
Ajax зум + Галлерея + Jquery

Смотреть примеры
Куча всяких примочек и фишечек, разные способы отображения и тд. Вообщем мастхэв.
«»
Вверх