Полезные функции РНР (1 пост)

Печать RSS
1564
Кураторы темы:

K

Транклюкаторщик
0
простенькая антиреклама
<?
function ad_cut($str,$to){
$domains = array('http://','.ru','.su','.mobi','.ws','.eu','.tv','.cc','.tv','.name','.us','.biz','.info','.org','.net','.com','.co','.in');
$replacer = array_fill(0,count($domains),$to);
$result = array_combine($domains,$replacer);
return strtr($str,$result);
}
?>
Изменил: KOZZ (16.08.2010 / 23:09)
K

Транклюкаторщик
0
удаление строки из файла
<?
function delete_str($f_name,$num){

# $f_name - файл в котором удаляем строку
# $num - номер удаляемой строки

$f = file($f_name);

unset($f[$num]);

if($num == (count($f)-1) && $num !== 0)
{$f[$num-1] = str_replace("\r\n",'',$f[$num-1]);}

if(file_put_contents($f_name,implode('',$f)))
{return true;} else {return false;}
}
?>
Изменил: KOZZ (21.08.2010 / 00:35)
K

Транклюкаторщик
0
47, поправочка:
<?
# удаление строки
function delete_str($f_name,$num){
$f = file($f_name);

unset($f[$num]);

if($num == count($f) && $num !== 0)
{$f[$num-1] = substr($f[$num-1],0,-2);}# убираем \r\n, если это последняя строка

if(file_put_contents($f_name,implode('',$f)))
{return true;} else {return false;}
}
?>
Изменил: KOZZ (21.08.2010 / 01:10)
В

Кодер
0
Определение дизайна сайта в зависимости от браузера
Не функция ) регулярка
$style = (preg_match('#linux|windows|Yahoo|Rambler|Yandex|Google|bsd|bsd|unix|macos|macintosh#i', $_SERVER['HTTP_USER_AGENT'])) ? 'web' : 'wap';
Изменил: Владислав (22.08.2010 / 16:11)
А

Пришелец
0
Узнаем день недели из time();
function ned($time){
if (isset($time)){

   $d = date("l",time());

$time = str_replace(array('Sunday','Monday','Tuesday','Wednesday','Friday','Saturday') , array('Воскресенье','Понедельник','Вторник','Четверг','Пятница','Суббота'), $d);
         

   return $time; }else{ return false; }
 }
пример:
echo ned(time());
Изменил: Артём (23.08.2010 / 05:12)

Пацак
0
Функция определения возраста по дате в формате 'dd.mm.yyyy'
function age($date)
 {
  $date=explode('.',$date);
  $m=date('m');
  $year=date('Y')-$date[2]-1;
  if ($m>$date[1])
   $year++;
  if ($m==$date[1])
   if (date('d')>=$date[0])
    $year++;
  return $year;
 }

Пацак
0
Не знаю на 100 % велосипед это или нет..
функция аналог imolode(), отлично от неё тем, что работает как с обычными так и многомерными массивами.
function my_implode($line,$array)
 {
  $end=count($array);
  $str='';
  for ($i=0; $i<$end; $i++)
   {
   	if ($i==0)
   	 $value=reset($array);
   	else
   	 $value=next($array);
   	if (is_array($value))
   	 $str.=my_implode($line,$value);
   	else
   	 $str.=$value;
   	if ($i<($end-1))
   	 $str.=$line;
   }
  return $str;
 }
A

Оранжевые штаны
0
Вот из комментариев к функции implode на php.net
Recursive Implode 

<?php 

function r_implode($glue, $pieces) 
{ 
  foreach($pieces as $r_pieces) 
  { 
    if(is_array($r_pieces)) 
    { 
      $retVal[] = r_implode($glue, $r_pieces); 
    } 
    else 
    { 
      $retVal[] = $r_pieces; 
    } 
  } 
  return implode($glue, $retVal); 
} 

?>
Пример:
<?php
$test_arr = array(0, 1, array('a', 'b'), array(array('x', 'y'), 'z')); 
echo r_implode(',', $test_arr) . "\n"; 
$test_arr = array(0); 
echo r_implode(',', $test_arr) . "\n"; 
?>
Эта функция побыстрее будет работать немного, чем опубликованая выше.
Изменил: Azzido (23.09.2010 / 07:17)
I

Пришелец
0
CSV/TSV-формат и PHP
<?
$rows = tsv_array($this->data['ModelName']['textarea_field']);   
?>
и
<?
function tsv_array($s, $keys=false, $delimiter="\t") {   
    $rows = explode("\n", r("\r", '', trim($s)));   
    $min = null;   
    $max = null;   
    foreach ($rows as &$row) {   
        $row = array_map('trim', explode($delimiter, $row));   
        $count = count($row);   
        if ($min===null || $count<$min) {   
            $min = $count;   
        }   
        if ($max===null || $count>$max) {   
            $max = $count;   
        }   
    }   
    unset($row);   
    if ($max!=$min) {   
        foreach ($rows as &$row) {   
            for ($i=count($row); $i<=$max; $i++) {   
                $row[] = false;   
            }   
        }   
        unset($row);   
    }   
    if (!$keys) return $rows;   
    if ($keys===true) {   
        $keys = array_shift($rows);   
    }   
    $result = a();   
    foreach ($rows as $row) {   
        $item = a();   
        for ($i=0; $i<count($row); $i++) {   
            if (!isset($keys[$i])) continue;   
            $item[$keys[$i]] = $row[$i];   
        }   
        $result[] = $item;   
    }   
    return $result;   
}  
?> 

Добавлено через 01:56 сек.
Преобразовать в верхний регистр первый символ строки
<?
function ucwords(string) {   
    return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();   
}  
klass
Изменил: iNeeXT (05.10.2010 / 23:24)
I

Пришелец
0
Преобразование переводов строк
Метод преобразует переводы строк вне тэгов <pre> в тэги <br />. Данная функция идентична встроенной в PHP nl2br() за исключением того, что она игнорирует пробелы в тэгах <pre>.
<?
if ( ! function_exists('nl2br_except_pre'))   
{   
    function nl2br_except_pre($str)   
    {   
        $ex = explode("pre>",$str);   
        $ct = count($ex);   
       
        $newstr = "";   
        for ($i = 0; $i < $ct; $i  )   
        {   
            if (($i % 2) == 0)   
            {   
                $newstr .= nl2br($ex[$i]);   
            }   
            else   
            {   
                $newstr .= $ex[$i];   
            }   
           
            if ($ct - 1 != $i)   
                $newstr .= "pre>";   
        }   
       
        return $newstr;   
    }   
}  

Добавлено через 01:04 сек.
Функция преобразует XML-символы в их сущности

Принимает строку и преобразует в ней зарезервированные XML-символы в их сущности:

Амперсанд: &
Знаки больше и меньше: < >
Одинарная и двойная кавычки: ' "
Дефис: -

Эта функция игнорирует амперсанд, если он является частью существующих сущностей.


<?
if ( ! function_exists('xml_convert'))  
{  
    function xml_convert($str)  
    {  
        $temp = '__TEMP_AMPERSANDS__';  
  
        // Replace entities to temporary markers so that   
        // ampersands won't get messed up  
        $str = preg_replace("/&#(\d );/", "$temp\\1;", $str);  
        $str = preg_replace("/&(\w );/",  "$temp\\1;", $str);  
      
        $str = str_replace(array("&","<",">","\"", "'", "-"),  
                           array("&", "<", ">", """, "'", "-"),  
                           $str);  
  
        // Decode the temp markers back to entities       
        $str = preg_replace("/$temp(\d );/","&#\\1;",$str);  
        $str = preg_replace("/$temp(\w );/","&\\1;", $str);  
          
        return $str;  
    }  
}  
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск