Deerua about Coding -> Заметки с тегом «php»

Блог о кодинге, автор Deerua

coding, javascript, css, html, php, jquery, mysql, deerua

Deerua about Coding

 Избранное

 Самые комментируемые за всю историю

 198 заметок ненаглядно

 Архив за 2010, 2009, 2008  год


Страницы:     1 | 2 | 3

 8 сентября 2009, 02:12       более 10-и месяцев назад

PHP: get google.PR end yandex.QI (тИЦ)  

Стало интересно, как всякие сервисы определяют ПР и тИЦ. Тогда как с Яндексом всё предельно ясно, то для Гугла нужны не кислые танцы с бубном.

Из просмотренных мною алгоритмов для гугла, я пришёл к выводу, что большинство выдраны с виндового гугл-тулбара, и работаю с периодическим успехом на разных системах и платформах. Попытки сделать этот алгоритм универсальным не увенчались успехом, но был найден другой, отличный от всех способ, который работает везде на 100%! Дальше по-порядку:

Яндекс:
  • урл должен быть полный с хттп
  • берем иксымель с яндексбара http://bar-navig.yandex.ru/
  • получаем тИЦ
Гугль:
  • урл не важно, но лучше с хттп (вероятность бана айпи меньше)
  • вычисляем Хеш урла (алгоритм XTEA)
  • вычисляем ЧекСум урла
  • отправлям всё через сокеты, притворясь браузером на один, из многих, айпи гугла
  • нам нужны только первые 30 байт
  • ищем строчку типа «Rank_1:1:Х», где Х наш ПР
  • получаем ПР


 1 комментарий

 Теги: php, SEO, шпаргалка

 4 сентября 2009, 15:10       более 11-и месяцев назад

PHP: Как открыть большой xml(файл) для работы с php

Считать fread может небольшой файл, и зная это ограничение, мы читаем файл по 8к, пока не кончится. Дальше перекодируем и конвертируем в массив, и сразу начинаем работать ;)
$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)

 Комментировать…

 Теги: php, шпаргалка

 4 сентября 2009, 15:01       более 11-и месяцев назад

PHP: utf8 to cp1251

Используя коды наших символов в утф8 и цп1251, находим последовательность операций для их превращения, и в итоге мы получаем небольшую функцию
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;
}

 Комментировать…

 Теги: php, шпаргалка

 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;
}

 Комментировать…

 Теги: php, шпаргалка

 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;
}

 4 комментария

 Теги: php

 18 июня 2009, 14:40       более года назад

Как вывести все переменные пхп (php)

<pre>
 <?php  print_R(get_defined_vars())?>
</pre>

 Комментировать…

 Теги: php, шпаргалка

 16 мая 2009, 15:17       более года назад

PHP File Manager  

Иногда, после того, как скрипт на сервере создаст какой-то файл, или распакует архив, мы не можем получить доступ по фтп к этому же файлу, а нам нужно срочно его обновить! Да ещё нету доступа к си-панели, или любой другой панели хостинга.

На помощь приходит любой PHPFileManager. Если поискать через google, то их можно найти очень-очень много, но многие из них убоги по функционалу, а другие уж очень громоздкие.

Меня интересовали только три критерия:
  • функциональность
  • Доступ к командной строке, средствами php
  • весь менеджер в одном файле
После хорошо десятка менеджеров, выбор пал на скрипт с таким же названием PHPFileManager %) Тем более он free!!

Работать с ним легко и просто, скачиваете архив, один его файлик замысловато переименовываете и бросаете где-то на хостинг по фтп ;) а дальше карты в руки!



ЗЫ: простой хинт, что бы изменить права на все файлы и папки в каталоге, используйте для chmod флаг -R, например
 chmod -R 777 templates/* 

 Комментировать…

 Теги: php

 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 Александр Улизько

 1 комментарий

 Теги: php, шпаргалка

 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).  

 2 комментария

 Теги: шпаргалка, php   encoding   utf8

 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: каждому своё ;)

 Комментировать…

 Теги: php   in_array, javascript

Страницы:     1 | 2 | 3
Нужно создать сайт на 1С-Битрикс(Bitrix)?
Работает на движке e2 Selecta * All sources code was highlighted with w3club Highlighter.
deer.org.ua © 2008—2010 Vitaliy Bogdanets Deerua