Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Полезные (интересные и оригинальные) решения

Автор: SiMM
Дата сообщения: 05.05.2005 19:14
[подлежит удалению]
Автор: silhouet
Дата сообщения: 19.05.2005 10:38
// Ф-ция возвращает $_POST без пустых полей.
<?
function clean($arg)
{
return strlen(trim($arg));
}

$post = array_filter($_POST, 'clean');
?>
Автор: svserg
Дата сообщения: 26.05.2005 16:37
Друзья!
Нужна php4apache.dll (или php4apache-eapi.dll)
откомпиленая с опцией -DEAPI
для apache 1.3.33 и php 4.3.11

Может у кого есть?
Автор: g00d
Дата сообщения: 27.05.2005 07:56
Народ подскажите "красивое" решение....
есть массив переменных в HTTP_POST_VARS
на форме около 22-х чекбоксов, не нажатый чекбокс неотправляется т.е. такой переменной нет в этоммассиве...., а послать такую переменную в случае не нажатого чекбокса все равно надо со значением false ( потому как если он нажат, то отправляется true ) я конечно понимаю что можно перебирать весь массив и если нет заданной переменной то создавать её со значением false. но это как то не красиво...
Спасибо.
Автор: sket4
Дата сообщения: 27.05.2005 19:23
g00d:

if (isset($твоя переменная)) { $твоя переменная=true; } else {$твоя переменная=false; }

сорри за оффтоп, но помогать меня всем учили
Автор: zerkms
Дата сообщения: 06.06.2005 09:53
g00d
если очень хочется - то сделай хидден поля для каждого чекбокса с тем же именем, но со значением false
Автор: oppo
Дата сообщения: 07.06.2005 02:30
очень все позновательно ...
я требую продолжения банкета.
Автор: Delphi6
Дата сообщения: 11.06.2005 17:22
Вот исходник который помогает защититься от спама, полную версию с примером качайте здесь.


Код:
<?php
/*===============================
Programed by Vitali
E-mail: Administrator@GeSoft.org
================================*/

session_start();

$ServerName = 'localhost';
$DBUserName = 'root';
$DBPassword = '';
$DBName = 'reg_user';
$SessionTable = 'sessionkey';

$ImageWidth = 100;
$ImageHeight = 45;

//Генерирую случайный ключ
function GetRandomKey() {
srand ((float) microtime() * 10000000);
return strtoupper(md5(uniqid(rand(),true)));
}

//Процедура выбирает случайный графический файл из заданного каталога,
//данное изображение будет использоваться как фон. Я дополнительно указал
//фильтр *.jpg
function LoadRandomPatern($Path) {
$FileList = array();
if ($Handle = opendir($Path)) {
while (false !== ($File = readdir($Handle))) {
if (($File !== '.')and($File !== '..')and(preg_match('/.+\.jpg/', $File))) {
array_push($FileList, $File);
}
}
closedir($Handle);
}
$Index = array_rand($FileList,1);
return @imagecreatefromjpeg($Path.$FileList[$Index]);
}

//Данная функция дает возможность выводить текст "Center" и если текст не
//помешается на изображении то она автоматом уменьшает размер шрифта
function ImageStringCentered($Picture,$Font,$Y,$Text,$Color) {
while (strlen($Text) * imagefontwidth($Font) > imagesx($Picture)) {
if ($Font > 1) {
$Font--;
} else {
break;
}
}
imagestring($Picture,$Font,imagesx($Picture) / 2 - strlen($Text) * imagefontwidth($Font) / 2,$Y,$Text,$Color);
}

//Здесь генерируется само изображение которое пользователь уведет
function CreateCodePicture() {
global $ImageWidth;
global $ImageHeight;
global $ID;

$Patern = LoadRandomPatern('patern\\');

$CodeImage = imagecreate($ImageWidth,$ImageHeight);
$TextColor = imagecolorallocate($CodeImage, 255, 255, 0);
imagecopyresized($CodeImage,$Patern,0,0,0,0,$ImageWidth+1,$ImageHeight+1,imagesx($Patern),imagesy($Patern));
ImageStringCentered($CodeImage, 4, 15, substr($ID, 0, 10), $TextColor);
return $CodeImage;
}

//Функция для сохранения номера сессии, ключа и даты
function SaveSessionKey() {
global $ServerName;
global $DBUserName;
global $DBPassword;
global $DBName;
global $SessionTable;
global $ID;

//Получаю номер данной сессии
$SessionID = session_id();

//Попытка подключится к серверу
if (!@mysql_connect($ServerName,$DBUserName,$DBPassword)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

//Попытка подключится к базе данных
if (!mysql_select_db($DBName)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

//Пытаюсь создать таблицу для хранения ключей. Если такова существует то ничего не делаю.
$CreateQuery = "
CREATE TABLE `$SessionTable` (
`ID` INT NOT NULL AUTO_INCREMENT,
`PHPID` VARCHAR(40) NOT NULL,
`SessionKey` VARCHAR(10) NOT NULL,
`Date` DATE NOT NULL,
PRIMARY KEY (`ID`)
);";
//Если ошибка не "Table '$SessionID' already exists"
if ((!mysql_query($CreateQuery))and(mysql_errno()!==1050)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

//Получаю все записи идентичные данной сессии (макс. одна, в том случае
//если пользователь запускает скрипт повторно или сделал refresh страницы)
$SelectQuery = "SELECT * FROM `$SessionTable` WHERE `PHPID`='$SessionID'";
if (!($SelectResult = mysql_query($SelectQuery))) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

if (mysql_num_rows($SelectResult)>0) {
//Запись уже существует, значит обновляем значение ключа
$UpdateQuery = "UPDATE `$SessionTable` SET `SessionKey`='$ID' WHERE `PHPID`='$SessionID';";
if (!mysql_query($UpdateQuery)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b><br>';
exit;
}
} else {
//Запись пока не существует, значит добавляем значение ключа
$InsertQuery = "INSERT INTO `$SessionTable` (`ID`, `PHPID`, `SessionKey`, `Date`) VALUES
('', '$SessionID', '$ID', '".date('Y-m-j')."');";
if (!mysql_query($InsertQuery)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b><br>';
exit;
}
}
}

//Функция по проверке правильности ключа, есть ли ключ в базе
function IsTrueKey($SessionKey) {
global $ServerName;
global $DBUserName;
global $DBPassword;
global $DBName;
global $SessionTable;

//Получаю номер данной сессии
$SessionID = session_id();
$SessionKey = strtoupper($SessionKey);

//Попытка подключится к серверу
if (!@mysql_connect($ServerName,$DBUserName,$DBPassword)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

//Попытка подключится к базе данных
if (!mysql_select_db($DBName)) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

//Получаю все записи идентичные данной сессии и ключу
$SelectQuery = "SELECT * FROM `$SessionTable` WHERE `PHPID`='$SessionID' AND `SessionKey`='$SessionKey'";
if (!($SelectResult = mysql_query($SelectQuery))) {
echo '<b><font color="#FF0000">Error:</font> SaveSessionKey;</b>';
exit;
}

if (mysql_num_rows($SelectResult)>0) {
return true;
} else {
return false;
}
}

//Проверка что должен делать скрипт, если указано что надо генерировать
//изображение то выводит в противном случае ничего не делает (нужно в том
//случае если скрипт вызывается с помощью include)
if ($_GET['op']=='pic') {
$ID = GetRandomKey();
SaveSessionKey();
header("Content-type: image/jpeg");
imagejpeg(CreateCodePicture());
}
?>
Автор: pimple
Дата сообщения: 15.06.2005 17:33
Здравствуйте, уважаемые. Следующий вопрос:
хочу поставить скрипт на php (news blog 1.1-как то вроде этого называется) для
удобного добавления новостей и возможности для пользователей писать комментсы.


ЧИТАЕМ ШАПКУ И НАЗВАНИЕ ТЕМЫ!!!
Автор: Mamay
Дата сообщения: 23.06.2005 13:55
Если было не пинайте - но вроде такого невстретил...
Для меня сие открытие было откровением!

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

Код: ob_start('ob_gzhandler');
Автор: chillz
Дата сообщения: 05.07.2005 16:27
Тот класс что давали по поводу "рисования" таблиц как в phpMyAdmin, ну уж слишком здоровый =) Да и применение класса в этом случае не обязательно.
Написал свой, состоит из одной функции.

Код:
function display_table($table) {
$sql = "select * from $table";
$q = mysql_query($sql);
$total = mysql_num_fields($q);
$fields = mysql_num_rows($q);
echo "<table border=1><tr>";
for($i=0;$i<$total;$i++) {
echo "<td>" . mysql_field_name($q,$i) . "</td>";
}
echo "</tr>";
for($n=0;$n<$fields;$n++) {
echo "<tr>";
for ($k=0;$k<$total;$k++) {
echo "<td>" . mysql_result($q,$n,$k) . "</td>";
}
echo "</tr>";
}
}
Автор: YM1979
Дата сообщения: 14.07.2005 01:46
Есть такая идея: большинство спамерских писем имеют заголовки, в которых символы кириллицы стоят рядом с латинскими - чтобы сложнее было по автору или теме в фильтре заблокировать. А вот в нормальной почте так никто не пишет - значит если перебрать все комбинации и отфильтровать найденные псьма, можно избавиться если не от всего спама, так от большей его части.
Автор: CYberMaster
Дата сообщения: 17.07.2005 09:21
Хочу реализовать на страничке обновление только определнной области. Например есть сайт, на нем небольшой логотип или кнопка помощи, при нажатии на него в небольшое по размерам место сайта загружался файл. Мой товарищь, говорит, что нужно использовать <?php include('header.php');?>. Тоесть делаем другую страничку по ссылке и грузим туда участки сайта. Я же хочу, чтобы не обновлялся весь сайт а только определнные области. Чтобы сам сайт как бы статичный оставался.
Как реализовывать???
Автор: sket4
Дата сообщения: 17.07.2005 12:47
CYberMaster
епрст, выше глаза поднять не в состоянии, ЗДЕСЬ ВОПРОСЫ НЕ ЗАДАЮТ
используй HTML тег <frame> или <iframe>
Автор: DeADMoHAX
Дата сообщения: 28.07.2005 19:09

Код:
<?php
if(!empty($_POST["ip"]))
{
$sock = fsockopen("whois.ripe.net", 43, $errno, $errstr);
if (!$sock)
{
echo("$errno($errstr)");
return;
}
else
{
fputs ($sock, $_POST["ip"]."\r\n");
while (!feof($sock))
{
echo (str_replace(":",":&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", fgets ($sock, 128))."<br>");
}
}
fclose ($sock);
}
?>
Автор: ripperm
Дата сообщения: 08.08.2005 02:04
chillz
Ну что за мания усложнять простые вещи... Скока раз сталкиваюсь все время прикалываюсь. Не прще ли немного будет поитав ман по SQL выяснить что бля получения полей есть замечательный запрос... и даже функции не надо

$res = mysql_query("show fields from table1");
echo "<table><tr>";
while($arr = mysql_fetch_array($res))
{
echo "<td>{$arr['Field']}</td>";
}
echo "</tr></table>";


Не правда ли все намного короче и проще?

Добавлено:

Цитата:
Спокойнее, плиз. Тот вариант для любой таблицы без знания столбцов в ней. Аналогия, как и сказано, с myPHPadmin /Cheery/
ps: и толку от нее больше, чем от твоего примера.

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

Да. Кое чего не заметил.. Вывод данных из таблиц. =) Ночное время влияет так сказать.
сори за оффтоп... Хотя вывод данных из таблиц дописывается ровно в три строчки к моему скрипту... Поправь если я не прав =)
Автор: foxweb
Дата сообщения: 08.08.2005 17:24
Проблема:
импортировать 9мб SQL-скрипт (дамп MySQL), если обычными споcобами (загрузка через web-интерфейс phpMyAdmin, Backup cPanel) проблематично, особенно на модемемном соединении.

Решение
можно залить на ftp и попросить админов восстановить базу, но не факт, что вам помогут. Можно попробовать через MySQL клиент типа SQLyog, MySQL-Front и т.д., но опять же не факт, что это закончится благополучно...

Перепробовав все перечисленные способы, я выяснил, что основная проблема - непрерывная передача 9мб файла.

И решил написать простенькую утилиту на PHP, которая будет читать SQL-файл построчно, точнее покомандно: выбирает команду (ограниченную точкой-с-запятой, исполняет её, и так далее). То есть все операции происходят внутри сервера, без участия клиента. Скорость бешеная, 9мб SQL-скрипт за 5 секунд!!! Ессесно файлик должен лежать там же, где скрипт.

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


Код: <?php

mysql_connect("localhost", "login", "password");
mysql_select_db ("database");

if (!file_exists($fname)) die ("Файл $fname не существует!");
$fp = fopen ($fname, "r");
$buffer = fread($fp, filesize($fname));
fclose ($fp);

$prev = 0;

while ($next = strpos($buffer,";",$prev+1))
{
$i++;
$a = substr($buffer,$prev+1,$next-$prev);
mysql_query($a);
$prev = $next;
}

echo "Выполнено $i команд";

?>
Автор: ripperm
Дата сообщения: 14.08.2005 01:56
foxweb
Хотел заметить, что такой вариант не отработает у тебя при встрече ; в самом запросе. Тогда он выполнит половину запроса до ; и естественно вернется ошибка.

Так же как и при дампе базы я бы просто лимитировал обьемы записываемые за одно обращение. Т.е. записал мегабайт в базу например пошел далее. И ресурсы такое меньше жрет...

Если exec на серваке не в бане тогда вообще пара строк нужна
exec("mysql -uusername -ppass") и т.п. )
Автор: foxweb
Дата сообщения: 28.08.2005 01:01
Да, всё вполне логично.
Я делал, что разбиение на запросы производилось не просто по ";", а по ";\n"
Хотя то же не очень универсально.
По поводу exec - отличная идея, но скрипт был написан прежде, чем разобрался с ней
Автор: oppo
Дата сообщения: 28.08.2005 16:11
..вывод
<? phpinfo();

include("../class.Thumbnail.php");
$tn_image = new Thumbnail("sample.gif", 0, 0, 25);



$tn_image->show();


?>


<?
/*
* class.Thumbnail.php
*
* Copyright (C) 2001 Hidayet Dogan (hdogan@bilcag.net)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/

class Thumbnail {
var $errmsg = "";
var $error = false;
var $format = "";
var $file = "";
var $max_width = 0;
var $max_height = 0;
var $percent = 0;

function Thumbnail($file, $max_width = 0, $max_height = 0, $percent = 0) {
if (!file_exists($file)) {
$this->errmsg = "File doesn't exists";
$this->error = true;
}
else if (!is_readable($file)) {
$this->errmsg = "File is not readable";
$this->error = true;
}

if (strstr(strtolower($file), ".gif"))
$this->format = "GIF";
else if (strstr(strtolower($file), ".jpg") ||
strstr(strtolower($file), ".jpeg"))
$this->format = "JPEG";
else if (strstr(strtolower($file), ".png"))
$this->format = "PNG";
else {
$this->errmsg = "Unknown file format";
$this->error = true;
}

if ($max_width == 0 && $max_height == 0 && $percent == 0)
$percent = 100;

$this->max_width = $max_width;
$this->max_height = $max_height;
$this->percent = $percent;
$this->file = $file;
}

function calc_width($width, $height) {
$new_width = $this->max_width;
$new_wp = (100 * $new_width) / $width;
$new_height = ($height * $new_wp) / 100;
return array($new_width, $new_height);
}

function calc_height($width, $height) {
$new_height = $this->max_height;
$new_hp = (100 * $new_height) / $height;
$new_width = ($width * $new_hp) / 100;
return array($new_width, $new_height);
}

function calc_percent($width, $height) {
$new_width = ($width * $this->percent) / 100;
$new_height = ($height * $this->percent) / 100;
return array($new_width, $new_height);
}

function return_value($array) {
$array[0] = intval($array[0]);
$array[1] = intval($array[1]);
return $array;
}

function calc_image_size($width, $height) {
$new_size = array($width, $height);

if ($this->max_width > 0) {
$new_size = $this->calc_width($width, $height);

if ($this->max_height > 0) {
if ($new_size[1] > $this->max_height)
$new_size = $this->calc_height($new_size[0], $new_size[1]);
}

return $this->return_value($new_size);
}

if ($this->max_height > 0) {
$new_size = $this->calc_height($width, $height);
return $this->return_value($new_size);
}

if ($this->percent > 0) {
$new_size = $this->calc_percent($width, $height);
return $this->return_value($new_size);
}
}

function show_error_image() {
header("Content-type: image/png");
$err_img = ImageCreate(220, 25);
$bg_color = ImageColorAllocate($err_img, 0, 0, 0);
$fg_color1 = ImageColorAllocate($err_img, 255, 255, 255);
$fg_color2 = ImageColorAllocate($err_img, 255, 0, 0);
ImageString($err_img, 3, 6, 6, "ERROR:", $fg_color2);
ImageString($err_img, 3, 55, 6, $this->errmsg, $fg_color1);
ImagePng($err_img);
ImageDestroy($err_img);
}

function show() {
if ($this->error) {
$this->show_error_image();
return;
}

$size = GetImageSize($this->file);
$new_size = $this->calc_image_size($size[0], $size[1]);
$new_image = ImageCreate($new_size[0], $new_size[1]);

switch ($this->format) {
case "GIF":
$old_image = ImageCreateFromGif($this->file);
break;
case "JPEG":
$old_image = ImageCreateFromJpeg($this->file);
break;
case "PNG":
$old_image = ImageCreateFromPng($this->file);
break;
}

ImageCopyResized($new_image, $old_image, 0, 0, 0, 0, $new_size[0], $new_size[1], $size[0], $size[1]);

switch ($this->format) {
case "GIF":
header("Content-type: image/gif");
ImageGif($new_image);
break;
case "JPEG":
header("Content-type: image/jpeg");
ImageJpeg($new_image);
break;
case "PNG":
header("Content-type: image/png");
ImagePng($new_image);
break;
}

ImageDestroy($new_image);
ImageDestroy($old_image);
return;
}
}
?>
клысс для генерации тумб
Автор: Shaun
Дата сообщения: 11.09.2005 21:56
Я решил чет сам написать и прошу вашей помощи!! Проблема и задача такова!
Маленький скриптик добавления в БД запись фильма и т.д. и т.п.

--1--add.php
<html>
<head><title>add_film</title></head>

<body bgcolor=#e9e9e9>
<center><h1>????????</h1></center>

<form method="post" action="insert_bd.php">
<table border=1>
<tr><td>Название фильма</td><td><input type="text" name="film" size="45"><br></td>
<tr><td>Актер</td><td><input type="text" name="akter" size="45"><br></td>
<tr><td>Жанр</td><td><input type="text" name="ganr" size="45"><br></td>
<tr><td>Размер</td><td><input type="text" name="size" size="45"><br></td>
</tr>
</table>
<br>
<input type="submit" name="add" size="15"><br>
<br>
</form>

<a href=.\index.php>Go BacK</a>
</body>
</html>

--2--insert_bd.php
<?php
$film = "film";
$akter = "akter";
$ganr = "ganr";
$size = "size";

$link = mysql_connect("localhost", "film", "film") or
die("Could not connect: " . mysql_error());


mysql_select_db("film");

$query = "insert into bd_films values ('".$film."', '".$akter."', '".$ganr."', '".$size."')";
$result = mysql_query($query);
printf ("Last inserted record has id %d\n", mysql_insert_id());

mysql_close($link);
?>


Бд создана! все ок !! А добавлять не хочет!! НЕ найду ошибку !Помагите плз)))Де то ,что то не написал!
Автор: zoza
Дата сообщения: 12.09.2005 01:01
$film = "film";
на
$film = $_POST['film'];

и так все...

только щас в лоб дадут... за вопрос не в теме.... и мне тоже..
Автор: MOFA
Дата сообщения: 17.09.2005 11:08
Если register_globals= Off:


Код:
$hash= $HTTP_GET_VARS;
foreach ($hash as $key=>$value){
$$key= $value;
}
Автор: Zver1992
Дата сообщения: 30.09.2005 20:27
Удалено.
Автор: zergussino
Дата сообщения: 18.10.2005 18:39
Не раз сталкивался с проблемой, что надо скачать все фотки с галереи где фотки можно открыть как, например, здесь http://people.freenet.de/leah01/1.jpg
Написал в результате простенький скрипт который это делает. Скрипт сырой, но может кому-нибудь сэкономит 20 минут времени. Кстати, если кто знает как добиться вывода сообщений в процессе его работы, а не по его завершению - киньте совет на мыло zergussino [собака] mail.ru
<?
set_time_limit(0);
function wwwcopy($file,$nfile)
{
echo "Читаем <b>".addslashes($file)."</b> ...<br />";
$fp = @fopen($file,"rb");
while(!feof($fp))
{
$cont.= fread($fp,1024);
}
fclose($fp);
echo "Пишем <b>".addslashes($nfile)."</b> ...<br />";
$fp2 = @fopen($nfile,"w");
fwrite($fp2,$cont);
fclose($fp2);
}

$server_name = 'http://урл_хоста/';
$local_directory = "C:/локальная_директория/";
$file_template = '%s.jpg';


for ($i=$_GET['start'];$i<$_GET['end'];$i++){
wwwcopy($server_name.sprintf($file_template, $i), $local_directory.sprintf($file_template, $i));
}
?>
Автор: ManHunter
Дата сообщения: 25.10.2005 13:30
Столкнулся с задачей динамической подгрузки контента на страницу (длиннющие списки).
Решил ее следующим образом:

На странице:

Код: <script>
function findObj(id) {
if(document.all)
return document.all[id];
else
return document.getElementById(id);
}

function branch(id) {
e=findObj('s'+id);
if (!e) return;
e.innerHTML="<b>Подождите, идет загрузка...</b>";
e.style.display='block';
e=findObj('loader');
if (!e) return;
e.src="branch.php?id="+id;
}
</script>

<span onClick="javascript:branch(1);">Первый</span><br>
<span id="s1" style="display:none; padding-left:20px;">&nbsp;</span>
<span onClick="javascript:branch(2);">Второй</span><br>
<span id="s2" style="display:none; padding-left:20px;">&nbsp;</span>
<span onClick="javascript:branch(3);">Третий</span><br>
<span id="s3" style="display:none; padding-left:20px;">&nbsp;</span>

<iframe id="loader" src="about:blank" vspace="0" hspace="0" marginwidth="0" marginheight="0" frameborder="0" height="0" scrolling="no" width="0"></iframe>
Автор: Rendom
Дата сообщения: 01.11.2005 03:06
Способ генерации случайного числа (или даже последовательности случайных чисел) неменяющимся в течении определенного времени (час, 2, сутки... любого).

Код: <?
    $REGEN_TIME = 3600*24*1; //Время в течении которого пследовательность случайных чисел не должна меняться в секундах.
    srand(floor(time()/$REGEN_TIME));
?>
Автор: UvazHai
Дата сообщения: 04.11.2005 13:54
Народ, помогите, плз...

У меня два вопроса, выручайте

Автор: Ternik
Дата сообщения: 08.11.2005 01:05
к вопросу о классе Thumbnails, линк на оригинал
http://www.hido.net/projects/phpThumbnailer/

также хочу поделиться очень замечательным классом для работы с XML документами.
MiniXML
http://minixml.psychogenic.com/index.html
на сайте предоставлена вся API документация.

Добавлено:
2Cheery

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

Код:
function callback ($buffer) {
//Отсекаем лишнее
$patterns = array ( "/<!--.{0,}-->/", "/<!--.{0,}-->/", "/ {2,}/", "/\t{1,}/", "/\r\n/", "/^\s{1,}/m");
$replaces = array ( "", "", " ", " ", "\n", "");
//Возвращаем буфер
return( preg_replace ($patterns, $replaces, $buffer ) );
}
//Буферизация вывода
ob_start("callback");
Автор: morjov
Дата сообщения: 08.11.2005 14:52
Ternik, если бы твой скрипт ещё и скрипты со стилями не трогал, то цены бы ему не было

Страницы: 12345678910

Предыдущая тема: Perl: Полезные решения


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.