8 сентября 2009, 02:12 более 10-и месяцев назад
PHP: get google.PR end yandex.QI (тИЦ)
Из просмотренных мною алгоритмов для гугла, я пришёл к выводу, что большинство выдраны с виндового гугл-тулбара, и работаю с периодическим успехом на разных системах и платформах. Попытки сделать этот алгоритм универсальным не увенчались успехом, но был найден другой, отличный от всех способ, который работает везде на 100%! Дальше по-порядку:
Яндекс:
- урл должен быть полный с хттп
- берем иксымель с яндексбара http://bar-navig.yandex.ru/
- получаем тИЦ
- урл не важно, но лучше с хттп (вероятность бана айпи меньше)
- вычисляем Хеш урла (алгоритм XTEA)
- вычисляем ЧекСум урла
- отправлям всё через сокеты, притворясь браузером на один, из многих, айпи гугла
- нам нужны только первые 30 байт
- ищем строчку типа «Rank_1:1:Х», где Х наш ПР
- получаем ПР
4 сентября 2009, 15:10 более 11-и месяцев назад
PHP: Как открыть большой xml(файл) для работы с php
$handle = fopen("http://site.com/export.xml", "rb"); $contents = ''; while (!feof($handle)) $contents .= fread($handle, 8192); fclose($handle); $contents = xml2array(utf8_to_cp1251($contents)); // незабываем делать unset($contents, $handle)
4 сентября 2009, 15:01 более 11-и месяцев назад
PHP: utf8 to cp1251
function utf8_to_cp1251($s){ for ($c=0;$c<strlen($s);$c++){ $i=ord($s[$c]); if ($i<=127) $out.=$s[$c]; if ($byte2){ $new_c2=($c1&3)*64+($i&63); $new_c1=($c1>>2)&5; $new_i=$new_c1*256+$new_c2; if ($new_i==1025){ $out_i=168; } else { if ($new_i==1105){ $out_i=184; } else { $out_i=$new_i-848; } } $out.=chr($out_i); $byte2=false; } if (($i>>5)==6) { $c1=$i; $byte2=true; } } return $out; }
4 сентября 2009, 14:57 более 11-и месяцев назад
PHP: xml to array
function xml2array($xml) { $xmlary = array(); $reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s'; $reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/'; preg_match_all($reels, $xml, $elements); foreach ($elements[1] as $ie => $xx) { $xmlary[$ie]["name"] = $elements[1][$ie]; if ($attributes = trim($elements[2][$ie])) { preg_match_all($reattrs, $attributes, $att); foreach ($att[1] as $ia => $xx) $xmlary[$ie]["attributes"][$att[1][$ia]] = $att[2][$ia]; } $cdend = strpos($elements[3][$ie], "<"); if ($cdend > 0) { $xmlary[$ie]["text"] = substr($elements[3][$ie], 0, $cdend - 1); } if (preg_match($reels, $elements[3][$ie])) $xmlary[$ie]["elements"] = xml2array($elements[3][$ie]); else if ($elements[3][$ie]) { $xmlary[$ie]["text"] = $elements[3][$ie]; } } return $xmlary; }
27 августа 2009, 08:16 более 11-и месяцев назад
PHP: BBcode to HTML
function bb2html($text){ $bbcode = array("<", ">", "[LIST]", "[*]", "[/LIST]", "[IMG]", "[/IMG]", "[B]", "[/B]", "[U]", "[/U]", "[I]", "[/I]", '[COLOR=', "[/COLOR]", "[SIZE=", "[/SIZE]", '[URL=', "[/URL]", "[MAIL=", "[/MAIL]", "[CODE]", "[/CODE]", "[QUOTE]", "[/QUOTE]", "[FONT=", "[/FONT]", ']'); $htmlcode = array("<", ">", "<ul>", "<li>", "</ul>", "<img src=\"", "\">", "<b>", "</b>", "<u>", "</u>", "<i>", "</i>", "<span style=\"color:", "</span>", "<span style=\"font-size:", "</span>", '<a href="', "</a>", "<a href=\"mailto:", "</a>", "<code>", "</code>", "<bloquote>", "</bloquote>", "<span style=\"font-family:", "</span >", '">'); $newtext = str_replace($bbcode, $htmlcode, $text); $newtext = nl2br($newtext); return $newtext; }
18 июня 2009, 14:40 более года назад
Как вывести все переменные пхп (php)
<pre> <?php print_R(get_defined_vars())?> </pre>
16 мая 2009, 15:17 более года назад
PHP File Manager
На помощь приходит любой PHPFileManager. Если поискать через google, то их можно найти очень-очень много, но многие из них убоги по функционалу, а другие уж очень громоздкие.
Меня интересовали только три критерия:
- функциональность
- Доступ к командной строке, средствами php
- весь менеджер в одном файле
Работать с ним легко и просто, скачиваете архив, один его файлик замысловато переименовываете и бросаете где-то на хостинг по фтп ;) а дальше карты в руки!
ЗЫ: простой хинт, что бы изменить права на все файлы и папки в каталоге, используйте для chmod флаг -R, например
chmod -R 777 templates/*
20 апреля 2009, 21:35 более года назад
Сколько лет/год/года, возраст то какой? :)
function letkov($vozrast) { if ($vozrast > 9) $vozrast = substr($vozrast,-2); $tmp = substr($vozrast,-1); if ($vozrast > 10 & $vozrast < 15) return "лет"; if($tmp == 1) return "год"; if($tmp > 1 & $tmp < 5) return "года"; return "лет"; }
upd 24.05.09 thx 2 Александр Улизько
12 марта 2009, 05:08 более года назад
Конвертация кириличной строки (Cyrillic UTF8) в транслит
function Transliterate($string){ $cyr=array( "Щ", "Ш", "Ч","Ц", "Ю", "Я", "Ж","А","Б","В", "Г","Д","Е","Ё","З","И","Й","К","Л","М","Н", "О","П","Р","С","Т","У","Ф","Х","Ь","Ы","Ъ", "Э","Є", "Ї","І", "щ", "ш", "ч","ц", "ю", "я", "ж","а","б","в", "г","д","е","ё","з","и","й","к","л","м","н", "о","п","р","с","т","у","ф","х","ь","ы","ъ", "э","є", "ї","і" ); $lat=array( "Shch","Sh","Ch","C","Yu","Ya","J","A","B","V", "G","D","e","e","Z","I","y","K","L","M","N", "O","P","R","S","T","U","F","H","", "Y","" ,"E","E","Yi","I", "shch","sh","ch","c","Yu","Ya","j","a","b","v", "g","d","e","e","z","i","y","k","l","m","n", "o","p","r","s","t","u","f","h", "", "y","" ,"e","e","yi","i" ); for($i=0; $i<count($cyr); $i++) { $c_cyr = $cyr[$i]; $c_lat = $lat[$i]; $string = str_replace($c_cyr, $c_lat, $string); } $string = preg_replace( "/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]e/", "\${1}e", $string); $string = preg_replace( "/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]/", "\${1}'", $string); $string = preg_replace("/([eyuioaEYUIOA]+)[Kk]h/", "\${1}h", $string); $string = preg_replace("/^kh/", "h", $string); $string = preg_replace("/^Kh/", "H", $string); return $string; } function encodestring($string){ $string = str_replace(array(" ",""","&","<",">"), array(" "), $string); $string = preg_replace("/[_\s\.,?!\[\](){}]+/", "_", $string); $string = preg_replace("/-{2,}/", "--", $string); $string = preg_replace("/_-+_/", "--", $string); $string = preg_replace("/[_\-]+$/", "", $string); $string = Transliterate($string); $string = ToLower($string); $string = preg_replace("/j{2,}/", "j", $string); $string = preg_replace("/[^0-9a-z_\-]+/", "", $string); return $string; }
Старый вариант, рабоатет на пхп < 5.1.2
// функция для разложения строки в массив // аналог стандартной str_split, но для работы с UTF-8 // проверено на многих языках function str_split_utf8($str) { $split = 1; $array = array(); for ($i=0; $i < strlen($str); ){ $value = ord($str[$i]); if($value > 127){ if ($value >= 192 && $value <= 223) $split = 2; elseif ($value >= 224 && $value <= 239) $split = 3; elseif ($value >= 240 && $value <= 247) $split = 4; } else $split = 1; $key = NULL; for ( $j = 0; $j < $split; $j++, $i++ ) $key .= $str[$i]; array_push( $array, $key ); } return $array; } function encodestring($st) { // Сначала заменяем "односимвольные" фонемы. $st_cyr = str_split_utf8("абвгґдеёзиійклмнопрстуфхыэ"+ "АБВГҐДЕЁЗИІЙКЛМНОПРСТУФХЫЭ "); $st_lat = str_split_utf8("abvggdeeziyyklmnoprstufhie"+ "ABVGGDEEZIYYKLMNOPRSTUFHIE_"); foreach ($st_lat as $key => $value) { $st_lat[$st_cyr[$key]] = $value; unset($st_lat[$key]); } $st = strtr($st, $st_lat); // Далее заменяем "многосивольные" фонемы, и фонемы без аналогов. $st_mf = array( "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"shch","ю"=>"yu", "я"=>"ya", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", "Щ"=>"SHCH", "Ю"=>"YU", "Я"=>"YA", "ї"=>"yi", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye", "ь"=>"","ъ"=>"","Ь"=>"","Ъ"=>""); $st = strtr($st, $st_mf); // Добиваем синтаксический мусор return ereg_replace("[^A-Za-z0-9\.\–\(\)_]", "", $st); } // пример: echo encodestring("мухаха!@#$%^&*_+!№;%:?*[]{}-=,<>+(ололоЪь)."); // в результате получим: // muhaha_(ololo).
8 февраля 2009, 21:02 более года назад
JavaScript in_array / расширяем функционал ;)
// Есть массив, хочем узнать входит ли в него элемент ;) var simplaArray = [ 5, 10, 15, 20, 25]; // Расширим прототайп :) // Простой способ Array.prototype.in_array = function(obj) { for(var i = 0, l = this.length; i < l; i++) { if(this[i] == obj) { return true; } } return false; } // Можно и в обьектах покопаться Object.prototype.in_array = function(datum, strict) { if (strict) function equals(a,b) { return a === b } else function equals(a,b) { return a == b } for (var i in this) if (equals(this[i], datum) ) return true; return false; } // Или через RegExp Array.prototype.in_array = function(obj){ return new RegExp('(^|\,)'+obj+'(\,|$)','gi').test(this); } // Проверяем simplaArray.in_array(10); // true simplaArray.in_array(11); // false // Ещё можно использовать простую функцию ;) function in_array(myValue,myArray){ function equals(a,b){return (a === b);} for (var i in myArray) if (equals(myArray[i],myValue) ) return true; return false; } in_array(5,simplaArray); // true in_array(69,simplaArray); // false // А ещё, мы легко можем вывести весь массив в одну строку toSource // и проверить текстом через indexOf. Но это не красиво ;) (','+simplaArray.toString()+',').indexOf(',5,')!==-1 // true //PS: каждому своё ;)