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

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

Автор: Cheery
Дата сообщения: 19.06.2008 18:08
grek912
MaxIkar
читаем шапку - здесь не раздел Вопрос/Ответ

grek912
пользуемся фильтром
Perl, PHP: отправка формы на e-mail
там же, наверняка, упомянут класс phpmailer, чтобы не возиться с pear
Автор: screamdj
Дата сообщения: 21.07.2008 17:14
Огромный респект за лин про проверку IP - очень нужно было
Автор: relates
Дата сообщения: 29.07.2008 15:36
Кто-нибудь знает, как реализовать преобразование sql в xml?
Нашел способ с помощью пхп -
http://www.ibm.com/developerworks/ru/library/x-query2xml/
Есть у кого, какие-нибудь другие предложения/идеи как это можно реализовать?
Автор: Oleg NT
Дата сообщения: 30.09.2008 01:42
Озадачился тут недавно: как прочитать EXIF-данные из JPEG-файла?

В PHP заявлена функция read_exif_data(), но на нашем сервере она не работает (Вызов неопределенной функции).

Нашел название библиотеки: PHP JPEG Metadata Toolkit, которая, по заверению в описании, работает куда лучше, чем стандартная функция PHP (что, мол, стандартная не все теги определяет).

Сайт официальный закрылся, ссылок в интернете нигде не нашел. Выкачал через ed2k.

Вот ссылка на библиотеку:
http://rapidshare.com/files/149517614/PHP_JPEG_Metadata_Toolkit_1.11.zip.html

Документация прилагается, код хорошо откомментирован. Но в том виде библиотека, как есть, не совсем удобна для использования, поэтому, возможно, придется поковыряться в ней
Автор: Delta RuBoard
Дата сообщения: 03.10.2008 20:44

Код:
function show_pages($topic_select_num_rows, $topic_select_all_num_rows, $posts_per_page, $cat, $p)
{
    global $_GET;
    if (!empty($cat))
    {
        $cat = '&cat='.$cat;
    }
    if (!empty($_GET['act']))
    {
        $cat = '&act='.$_GET['act'];
    }
    $pages_num = ceil($topic_select_all_num_rows / $posts_per_page);
    $pages = '';
    $pages_show = '';
    if ($p > $pages_num)
    {
        $p = $pages_num;
    }
    if ($p < 3)
    {
        $left = $p - 1;
    }
    else
    {
        $left = 2;
    }
    if ($p > ($pages_num-2))
    {
        $right = $pages_num - $p;
    }
    else
    {
        $right = 2;
    }
    if ($p > 3)
    {
        $left_add = ' <a href=?p='.($p-3).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20px;">&nbsp;&nbsp;…&nbsp;&nbsp;</a> ';
    }
    else
    {
        $left_add = ' ';
    }
    if ($p < ($pages_num - 2))
    {
        $right_add = ' <a href=?p='.($p+3).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20px;">&nbsp;&nbsp;…&nbsp;&nbsp;</a> ';
    }
    else
    {
        $right_add = ' ';
    }
    for ($i = $left; $i-->0;)
    {
        $pages_show .= '<a href=?p='.($p-$i-1).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20px;">&nbsp;&nbsp;'.($p-$i-1).'&nbsp;&nbsp;</a> ';
    }
    $pages_show .= '<span style="border: 1px solid #000; background-color:#e0e0e0; width: 20px;">&nbsp;&nbsp;'.$p.'&nbsp;&nbsp;</span>';
    for ($i = 0; $i++<$right;)
    {
        $pages_show .= ' <a href=?p='.($p+$i).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20px;">&nbsp;&nbsp;'.($p+$i).'&nbsp;&nbsp;</a> ';
    }
    $pages .= '<a href=?p=1'.$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20 px;">&nbsp;&nbsp;«&nbsp;&nbsp;</a> ';
    if ($p > 1)
    {
        $pages .= '<a href=?p='.($p-1).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20 px;">&nbsp;&nbsp;‹&nbsp;&nbsp;</a> ';
    }
    $pages .= $left_add.$pages_show.$right_add;
    if ($p < $pages_num)
    {
        $pages .= ' <a href=?p='.($p+1).$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20 px;">&nbsp;&nbsp;›&nbsp;&nbsp;</a>';
    }
    $pages .= ' <a href=?p='.$pages_num.$cat.' class=t_link style="border: 1px solid #000; background-color:#f0f0f0; width: 20 px;">&nbsp;&nbsp;»&nbsp;&nbsp;</a> ';
    $pages .= '<br><br>';
    return $pages;
}
Автор: STAFT
Дата сообщения: 14.10.2008 07:41
Спасибо за ваши Сообщении! Буду часто заходить!

***.Cx0.ru
Автор: SvMn
Дата сообщения: 14.10.2008 17:21
А как сделать php код скрыть/Развернуть ??
Автор: nomerdoma
Дата сообщения: 15.10.2008 10:34
сайт о недвижимостиp
как раскрутить сайт?

Добавлено:
визитки
,
Автор: klyopsanya
Дата сообщения: 19.10.2008 15:29
Здраствуйте!!
У меня такая проблема
Автор: lucywave
Дата сообщения: 21.10.2008 00:25
Всем привет! У меня такой вопрос. Как сделать расхлоп графиков, как на http://www.***.ru То есть, чтобы при нажатии весь фон затемнялся, а в центре был расхлопнутый график.
Автор: ofj
Дата сообщения: 24.10.2008 07:42
Привет всем. Памогите кто может с ткой проблемой:
Автор: ofj
Дата сообщения: 28.10.2008 12:50
Памогите, такая проблема: ссылки должны стать актикными в течение определенного времени
Автор: Alvein
Дата сообщения: 21.11.2008 13:52
Использование бит в повседневной жизни (например для хранения данных выбора нескольких значений из небольших списков)

Предположим у нас есть 5-ть <input type="checkbox" name="nameinp[ind]" />
где, ind - числовой идентификатор поля.

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


Код:
<?php
$nameinp = $_REQUEST['nameinp'];

foreach ($nameinp as $key => $val)
$un = $un ^ pow(2,intval($v));
?>
Автор: sandyANF
Дата сообщения: 28.11.2008 11:26
Требуется на страничку вывести данные, относящиеся к определенному периоду. Для этого пользователю нужно ввести сам этот период с такого-то числа по такое-то. Можно сделать форму с 6-ю полями ввода (день, месяц и год для начала и окончания периода), но на мой взгляд гораздо красивее, если будет одна строчка и пользователь сам укажет тот период, который ему будет необходим.

Функция парсит период, введенный в формате [ДД][.ММ][.ГГ[ГГ]] [- [ДД][.ММ][.ГГ[ГГ]]]
Если указана дата только начала, то окончание принимается та же дата.
Если ничего не указано, то за период принимается текущее число.
Если указан только месяц (например так: .10), то период принимается от начала указанного месяца до его окончания. То же и с годом.

Возвращается массив, состоящий из двух значений: дата начала и дата окончания периода. На входе функции - строка, введенная пользователем.


Код: //Возвращает дату начала и дату окончания, полученные из строки.
//$_period - это строка типа "ДД.ММ.ГГГГ - ДД.ММ.ГГГГ"
function period_parser($_period) {
    $st = str_replace(" ", "", $_period);
    $st = str_replace(",", ".", $st);
    $ar = explode('-', $st,2);
    list($d1,$m1,$y1) = explode('.', $ar[0],3);
    list($d2,$m2,$y2) = explode('.', $ar[1],3);
    if ($d1==0&&$m1==0&&$y1==0&&$d2==0&&$m2==0&&$y2==0) {$d1 = date("d");$m1 = date("m");$y1 = date("Y");$d2 = date("d");$m2 = date("m");$y2 = date("Y");}
    if ($m1==0&&$m2==0&&$d1==0) {$m1=1;$m2=12;}
    if ($m1==0) {$m1=date("m");}
    if ($m2==0) {$m2=$m1;}
    if ($y1==0) $y1 = date("Y");
    if ($y2==0) $y2 = $y1;
    if ($d1==0&&$d2==0) {$d1=1;$d2=date("d",mktime(0,0,0,$m1+1,0,$y));}
    if ($d1==0) {$d1 = date("d");}
    if ($d2==0) {$d2 = $d1;}
    return array(mktime(0,0,0,$m1,$d1,$y1),mktime(0,0,0,$m2,$d2,$y2));
}
Автор: sandyANF
Дата сообщения: 03.12.2008 14:05
Возвращает ФИО в сокращенном виде. Т.е. на входе, например, "Иванов Петр Сергеевич", а на выходе "Иванов П.С."

Код: //Возвращает строку вида "Фамилия И.О." в ответ на полные ФИО
function fio($st) {
    $ar='';
    preg_match_all ('/\S+/', $st, $ar);
    $f = $ar[0][0];
    $i = strlen($ar[0][1])>0 ? (substr ($ar[0][1], 0 ,1).'.') : '';
    $o = strlen($ar[0][2])>0 ? (substr ($ar[0][2], 0 ,1).'.') : '';
    return $f.' '.$i.$o;
}
Автор: coolkatala
Дата сообщения: 04.12.2008 11:45
ofj Это можно реализовать с помощью javascript.

Допустим у тебя есть слово которое потом станет ссылкой <font id=link> Ссылка </font>
ставишь функцию

window.onload = setTimeOut("make_link()",5000); // 5 sec
function make_link(){

document.getElementById("link").innerHTML = "<a href='http://asdfa.com/' > Ссылка </a>";

}

________________________________________________
http://***.ru/ - искуство HTML, CSS, AJAX, PHP, PS design
Автор: zgonnik
Дата сообщения: 05.12.2008 09:39
MAGISTRATE
Спасибо за материал
Автор: IFKey
Дата сообщения: 10.12.2008 09:46
Иногда бывает нужно перевести первый символ в большой или маленький регистр или даже весь текст, но стандартные методы не всегда работают, в решении проблемы Вам помогут две эти функции:

Цитата:
# параметры функции: текст, количество символов начиная с первого
function strtolower_ru($text,$count=false) {
$alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');
$alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');
if ($count!=false){
return str_replace($alfavitupper,$alfavitlover,strtolower($text));
} else {
$text[$count] = str_replace($alfavitupper,$alfavitlover,strtolower($text[$count]));
return $text;
}
}

function strtoupper_ru($text,$count=false) {
$alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');
$alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');
if ($count!=false){
return str_replace($alfavitlover,$alfavitupper,strtoupper($text));
} else {
$text[$count] = str_replace($alfavitlover,$alfavitupper,strtoupper($text[$count]));
return $text;
}
}
print strtolower_ru("Привет",0); // Результат: привет
print strtoupper_ru("привет",0); // Результат: Привет
Автор: kiloptus
Дата сообщения: 16.12.2008 17:15
IFKey, что мешает вместо ($count!=false) использовать ($count)? На мой взгляд, красивше.

Плюс setlocale() в большинстве случаев выручает.

P.S. Пролистал мельком тему... предлагаю скинуться уважаемому Cheery на корвалол обсуждение в ПС
Автор: mouser
Дата сообщения: 19.12.2008 11:45
как закодировать HTML строку чтоб не было видно в SOURCE коде когда страница уже загрузилась... нужно сделать на сайте с движком DLE
Автор: spbalex777
Дата сообщения: 29.01.2009 13:42
Требуется PHP программист для компании in-joy.Вакансии по адресу http://www.***.ru
Автор: WEBMASTERR
Дата сообщения: 09.02.2009 22:48
Создание сайтов под заказ и все для сайта - http://***.net
Автор: Le Droy
Дата сообщения: 24.02.2009 18:22

Цитата:
# параметры функции: текст, количество символов начиная с первого
function strtolower_ru($text,$count=false) {
$alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');
$alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');
if ($count!=false){
return str_replace($alfavitupper,$alfavitlover,strtolower($text));
} else {
$text[$count] = str_replace($alfavitupper,$alfavitlover,strtolower($text[$count]));
return $text;
}
}
...


Поднимаю старое сообщение, но объясните, зачем такой, простите, изврат? Ведь существует функция ucfirst();
Автор: Cheery
Дата сообщения: 26.02.2009 23:19
Le Droy

Цитата:
Поднимаю старое сообщение, но объясните, зачем такой, простите, изврат? Ведь существует функция ucfirst();

ucfirst поднимает только первую букву. код выше - произвольную, либо целиком.



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

Код: <?php
$userdir='.';
$start=microtime(true);
echo "Method#1: ".dsize($userdir)." Bytes<br>";
$end=microtime(true);
echo "Time:".($end-$start)." seconds<br>";
$start=microtime(true);
echo "Method#2: ".getsize($userdir)." Bytes<br>";
$end=microtime(true);
echo "Time:".($end-$start)." seconds<br>";

function dsize($dir)
{
if (!file_exists($dir)||!is_dir($dir)) return -1;
$size=0;
if (eregi("Windows",$_ENV['OS']))
{
$dirs=dirslist($dir);
if(is_array($dirs))
foreach($dirs as $d)
$size+=dir_size($d);
return $size;
}
else
{
$du = @popen('/usr/bin/du -sb ' . escapeshellarg($dir), 'r');
$result = fgets($du, 256); pclose($du);
list($result,) = explode("\t", $result);
return intval($result);
}
return 0;
}
function dirslist($dir)
{
$dir=str_replace('/','\\',$dir);
$out=shell_exec("dir /AD /b /s ".escapeshellarg($dir));
$dirs=split("[\n\r]+",$out);
if (is_array($dirs)&&trim($dirs[count($dirs)-1])=='') array_pop($dirs);
$dirs[]=$dir;
return $dirs;
}

function dir_size($dir)
{
$dir=str_replace('/','\\',$dir);
$out=shell_exec("dir ".escapeshellarg($dir));
$out=preg_split('/[\n\r]+/',$out);
if (is_array($out)&&count($out)>2)
{
preg_match('/([0-9,\.]+)\s+bytes/i',$out[count($out)-3],$bytes);
if (isset($bytes[1])) return intval(str_replace(array(',','.'),'',$bytes[1]));
}
return 0;
}

function getsize($path){
if (!is_dir($path))
return filesize($path);
$size=0;
foreach (scandir($path) as $file){
if ($file=='.' or $file=='..')
continue;
$size+=getsize($path.'/'.$file);
}
return $size;
}
?>
Автор: Cheery
Дата сообщения: 27.02.2009 21:43
Для никсов те же файлы интереснее..

Цитата:
Method#1: 831488 Bytes
Time:0.00887012481689 seconds
Method#2: 586954 Bytes
Time:0.000932931900024 seconds

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

Цитата:
Method#1: 1890906112 Bytes
Time:0.209075212479 seconds
Method#2: 1872467391 Bytes
Time:0.0663659572601 seconds

разница с виндами приличная
ps: с большими файлами первая цифра потом стала, вроде, 0.02 - не знаю что повлияло, но файлы уже удалил.
правда видно, что все равно как считать
Автор: kloha
Дата сообщения: 08.03.2009 11:45

Вот нашол такой скрипт для пинга .но мне надо чтобы пингавал все время с интервалом в пару минут .кто может подсказать как это сделать.
Автор: Blinda_J
Дата сообщения: 12.03.2009 22:45
Пардон...можете удалить мой пост, что бы не болтался...
Автор: deman_ru
Дата сообщения: 12.04.2009 21:26
ребят помогите советом, в php я сравнительно недавно, можно сказать еще нуб...мне нужно получить доступ к БД под управлением сервера Firebird 1.5.
для соединения использую следующий код...
Fatal error: Call to undefined function ibase_pconnect() in ...
Автор: bleff_power
Дата сообщения: 27.04.2009 15:59
Не хочет вводится string null, хотя другие значения работают нормально. Поле из таблицы не имеет атрибут NOT NULL. Вот исходник:
Автор: evil63
Дата сообщения: 08.06.2009 12:47

Цитата:

Возвращает ФИО в сокращенном виде. Т.е. на входе, например, "Иванов Петр Сергеевич", а на выходе "Иванов П.С."

Код:
//Возвращает строку вида "Фамилия И.О." в ответ на полные ФИО
function fio($st) {
    $ar='';
    preg_match_all ('/\S+/', $st, $ar);
    $f = $ar[0][0];
    $i = strlen($ar[0][1])>0 ? (substr ($ar[0][1], 0 ,1).'.') : '';
    $o = strlen($ar[0][2])>0 ? (substr ($ar[0][2], 0 ,1).'.') : '';
    return $f.' '.$i.$o;
}

function fio($string)
{
list($first, $second, $third) = explode(' ', $string);
return $first.' '.$second[0].'.'.$third[0].'.';
}

Страницы: 12345678910

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


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