Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Начну:

Код:
 
  function err_handler ($errno, $errstr, $errfile, $errline) {
    global $display_errors;
    if(($errno != E_NOTICE && $errno != E_WARNING) && $display_errors){
      echo '';
    }
  }
  $error_flags = E_ALL & ~E_NOTICE;
  @error_reporting($error_flags);
  @ini_set ('error_reporting', $error_flags);
  $old_error_handler = set_error_handler("err_handler");
 

 
Бывает полезным, убивает все нотайсы, выводы ошибок и прочее.
 
ЗЫ: Желательно прикрепить.



Публикуем решения, а не задаем вопросы!
Тех же, кто этого не понимает, будем БАНИТЬ!  
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.





Цитата:
ЗЫ: Желательно прикрепить.
В ПМ по этому поводу писать надо. — Svarga.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 07:30 26-07-2004 | Исправлено: Cheery, 16:57 25-03-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Потребовался механизм загрузки картинок из Маркет.Яндекс продукции.
Насколько это хорошо или плохо я вдаваться не стал, но нижеперечисленный код вроде работает.
Полный код с примерами.

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 16:57 19-03-2008 | Исправлено: 6epcepk, 16:59 19-03-2008
TERROR666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ГЕНЕРАТОР ПАРОЛЕЙ  
$length - длина пароля  
$dig    - использовать ли цифры (по умолчанию - да)  
$lchar  - использовать ли латинские буквы (по умолчанию - да)  
$rchar  - использовать ли русские буквы  
$symb   - использовать ли дополнительные символы и какие  
 
 
Код:  
function generate_password($length,$dig=1,$lchar=1,$rchar=0,$symb=''){  
    $dig=array(0,1,2,3,4,5,6,7,8,9);  
    $rus=array(  
    "а","б","в","г","д","е","ж","з","и","к",  
    "л","м","н","о","п","р","с","т","у","ф",  
    "х","ц","ч","ш","щ","ь","ы","ъ","э","ю",  
    "я","ё","й");  
    $for=array(  
    "a","b","c","d","e","f","g","h","j","k",  
    "l","m","n","o","p","q","r","s","t","u",  
    "v","w","x","y","z");  
    $main=array();  
    $dig?$main=array_merge($main,$dig):true;  
    $rchar?$main=array_merge($main,$rus):true;  
    $lchar?$main=array_merge($main,$for):true;  
    !empty($symb)?$main=array_merge($main,explode(' ',$symb)):true;  
    shuffle($main);  
    return $pass=substr(implode('',$main),0,$length);  
}

Всего записей: 16 | Зарегистр. 26-11-2006 | Отправлено: 00:17 14-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот решил поделиться куском кода который украшает программу (повышает читабельность):

Код:
function TrimLine($line) {
  return trim($line);
}
 
$fileLines = file('./input.txt');
var_dump(array_map('TrimLine', $fileLines));

часто бывает что надо считать данные из файла не однократно и убрать все переносы строк или пробелы с начала или конца каждой строки. Что бы не делать банально каждый раз foreach + trim можно воспользоваться вот такой конструкцией.
 
п.с. замечание особо одаренным, которые родились с книгой РНР5 в руках, этот код не для вас. Я перед вами склоняю голову и приношу свои извинения что оскорбил ваш взор своим банальным кодом
 
Добавлено:
Офигеть! Не перестает удивлять меня РНР

Цитата:
$dig?$main=array_merge($main,$dig):true;

как я понимаю это аналог

Код:
list($dig, $main) = array(array_merge($main,$dig), true);

п.с. пусть еще потом знатоки Perl говорят что РНР не гибкий язык программирования

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 06:11 16-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
function TrimLine($line)

зачем еще функцию какую то создавать? почему бы
Цитата:
array_map

не скормить оригинальную?  
 

Цитата:
как я понимаю это аналог  

нет
это просто  
if ($dig)  $main=array_merge($main,$dig);

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:16 16-04-2008 | Исправлено: Cheery, 06:18 16-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
зачем еще функцию какую то создавать? почему бы array_map не скормить оригинальную?

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

Код:
$fileLines = file('./input.txt');
var_dump(array_map('trim', $fileLines));

 
[DELETED]

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 08:19 16-04-2008 | Исправлено: Delphi6, 07:49 17-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Значит синтаксис таков:  

нет, не таков
 

Цитата:
п.с. а где еще можно почитать о похожих констуркциях?

всё тут: http://www.php.net/manual/ru/language.operators.php
 
ps: оффтоп это всё

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 08:40 16-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
не будем флеймить, да?  
плюс код все равно нерабочий - есть ошибки.
например перекрытие $dig как аргумента и переменной внутри функции

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:34 16-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прошения за флуд. Подумав немного сообразил что это тоже самое что:

Цитата:
[оператор] = [условие] ? [то что в случае true] : [то что в случае false];

здесь просто упущены [оператор] к которой присваивается значение и [то что в случае false], на его месте просто ture, что бы не нарушать синтаксис.
 
п.с. кстати это тоже можно расценивать как оригинальный способ использовать =?: конструкцию

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 19:00 16-04-2008 | Исправлено: Delphi6, 09:09 18-04-2008
JonJonson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6, плохо вы смотрели там есть ссылка на http://www.php.net/manual/ru/language.operators.comparison.php
Да и ниже в таблице порядка выполнения операторов упоминается ?:

Всего записей: 135 | Зарегистр. 22-05-2004 | Отправлено: 06:00 17-04-2008
Ser5

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гибкая проверка IP-адресов.

Всего записей: 2 | Зарегистр. 24-08-2007 | Отправлено: 23:46 20-04-2008
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Написана функция, позволяющая добавлять в начало числа нули (аналог unsigned zerofill в sql):
 

Код:
function unsigned_zerofill($number, $length) {
 
    if (strlen($number) > $length) return;
    
    for ($i = 10, $j = 1; ; $i *= 10, $j++) {
 
        if ($number < $i) return substr(pow(10, $length - $j), 1) . $number;
 
    }
 
}
 
unsigned_zerofill(13, 5); // --> 00013


----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 13:48 19-05-2008
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
Предлагаю более универсальный способ, который учитывает уже имеющиеся функции.

Код:
str_pad('13', 5, '0', STR_PAD_LEFT)
дополнить строку 13 слева нулями до длины 5.

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 22:04 19-05-2008
rusneftesnab

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хотелось - бы понять правильность кодов http://www.***.ru




Хотелось бы, чтобы читали правила и не занимались рекламой на форуме /Cheery/

Всего записей: 1 | Зарегистр. 20-05-2008 | Отправлено: 11:37 20-05-2008 | Исправлено: Cheery, 17:36 20-05-2008
romka777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
6epcepk  
Предлагаю более универсальный способ, который учитывает уже имеющиеся функции.  
 
Код:str_pad('13', 5, '0', STR_PAD_LEFT)  
 
дополнить строку 13 слева нулями до длины 5.

 

Код:
sprintf("%05d", $str)

 
Добавлено:
Привести все элементы массива к int:

Код:
 
array_walk(&$array, create_function('&$value', 'settype($value, "int");'));
 

Всего записей: 94 | Зарегистр. 28-12-2005 | Отправлено: 13:03 20-05-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
romka777
$arr = array_map('intval', $arr);

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 15:19 20-05-2008
vitcom2

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не помню откуда, но думаю кому нить пригодиться
 
 
СУММА ПРОПИСЬЮ
 
<?
// Функция парсирования триады
// $num - целое число от 0 до 999
// $words - массив, в котором элемент с индексом
// 0 - написание числа 1 (например - "один", "одна")
// 1 - написание числа 2 (аналогично)
// 2 - единицы в единственном числе им.падеже("рубль")
// 3 - единицы в единственном числе род.падеже("рубля")
// 4 - единицы во множественном числе им.падеже("рублей")
 
Function ParseTriad($num,$words)
{
$hundreds = array("",'сто','двести','триста','четыреста','пятьсот','шестьсот',
'семьсот','восемьсот','девятьсот');
$decads = array('двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят',
'восемьдесят','девяносто');
$fdecads = array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать',
'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
$ones = array("",$words[0],$words[1],'три','четыре','пять','шесть','семь','восемь','девять');
 
$result = "";
 
$h = floor($num / 100);
 
$result .= $hundreds[$h];
 
$d = floor(($num - $h * 100) / 10);
$c = ($num - $h * 100 - $d*10);
 
$result.=($result!="")?" ":"";
 
if ($d==1) {$result .= $fdecads[$c];}
else
{if ($d>1) $result .= $decads[$d-2] . " ";
$result .=$ones[$c];}
 
$result.=($result!="")?" ":"";
 
switch ($c)
{
case 1:
$result .= ($d!=1)?$words[2]:$words[4];
break;
case 2:
case 3:
case 4:
$result .= ($d!=1)?$words[3]:$words[4];
break;
default:
if ($num > 0)
{$result .= $words[4];}
}
return $result;
}
 
// Функция возвращает число прописью
// $num - любое целое число (в данной реализации до 10^12-1)
// $upcase - булев параметр, если тру, то строка с заглавной буквы
Function ParseSum($num,$upcase)
{
$md = floor($num/1e9);
$m = floor(($num - $md*1e9)/1e6);
$t = floor(($num - $md*1e9 - $m*1e6)/1e3);
$h = floor($num - $md*1e9 - $m*1e6 - $t*1e3);
 
$result = ParseTriad($md,array('один','два','миллиард','миллиарда','миллиардов'));
$result .=($result!="")?" ":"";
$result .= ParseTriad($m,array('один','два','миллион','миллиона','миллионов'));
$result .=($result!="")?" ":"";
$result .= ParseTriad($t,array('одна','две','тысяча','тысячи','тысяч'));
$result .=($result!="")?" ":"";
$result .= ParseTriad($h,array('один','два','рубль','рубля','рублей'));
 
$result = $upcase?ucfirst($result):$result;
return $result;
}
?>

Всего записей: 6 | Зарегистр. 27-06-2006 | Отправлено: 01:53 26-05-2008
grek912

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ подскажите пожалуйста.
Короче в скрипте прописана отправка сообщений на мыло через SMTP сервер простой командой mailto мне надо как то это переписать чтобы скрипт авторизировался на SMTP сервере и с него отправлял потому что хостинг не разрешает не авторизируясь отправлять. Заранее спасибо

Всего записей: 7 | Зарегистр. 13-06-2008 | Отправлено: 09:20 19-06-2008
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://pear.php.net/package/Mail

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 10:49 19-06-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grek912
MaxIkar
читаем шапку - здесь не раздел Вопрос/Ответ
 
grek912
пользуемся фильтром
Perl, PHP: отправка формы на e-mail
там же, наверняка, упомянут класс phpmailer, чтобы не возиться с pear

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:08 19-06-2008
screamdj

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Огромный респект за лин про проверку IP - очень нужно было

Всего записей: 1 | Зарегистр. 21-07-2008 | Отправлено: 18:14 21-07-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru