Tråden för användbara funktioner

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3, 4, 5, 6, 7  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
lilleman
Ex-Moderator



Medlem i: 5883 dagar
Från: Örebro
Status: Offline



#254475
Inlägg Skrivet: 2005-01-10 22:42      Ämne: Citera

Denna funktion kan användas för att räkna ut hur många år, månader och dagar som gått sedan ett visst datum. Den fungerar även på datum före '1970-01-01'. Formatet på datumet ska vara 'år-månad-dag', t.ex. '1939-09-01'.

PHP:
1:
 function getdiff($fromDate)
2:
{
3:
  list($thisYear$thisMonth$thisDay$thisDoY$thisDiM) = explode('.'date('Y.n.j.z.t'));
4:
 
5:
  list($fromYear$fromMonth$fromDay) = preg_split('/-0?/'$fromDate);
6:
  $fromDoY date('z'mktime(0,0,0$fromMonth$fromDay$thisYear));
7:
  if( $fromDoY == $thisDoY ) return array($thisYear-$fromYear00);
8:
 
9:
  $passedYears = ( $thisYear $fromYear );
10:
 
11:
  $passedMonths = ( $fromDoY $thisDoY ) ? 12-( $fromMonth-$thisMonth ) : $thisMonth-$fromMonth;
12:
  $passedDays = ( $thisDay $fromDay ) ? $thisDiM-( $fromDay-$thisDay ) : $thisDay-$fromDay;
13:
 
14:
  if( $fromDoY $thisDoY $passedYears--;
15:
  if( $thisDay $fromDay $passedMonths--;
16:
 
17:
  return array($passedYears$passedMonths$passedDays);
18:

PHP:
1:
 $result getdiff('1939-09-01');
2:
echo sprintf('%d år, %d månader och %d dagar',
3:
  $result[0], $result[1], $result[2]); 


Senast ändrad av lilleman den 2005-05-01 15:36, ändrad totalt 1 gång
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
lord mazdak



Medlem i: 5545 dagar
Från: Göteborg
Status: Offline



#272052
Inlägg Skrivet: 2005-03-01 17:39      Ämne: Citera

Funktion som letar efter variabel namn i en sträng och retunerar sedan en sträng som man sedan kan köra eval på och då gör den variablel namnet till en global variabel

PHP:
1:
 
2:
function local_func($text)
3:
{
4:
   preg_match_all ('/{(\$[^}]*)}/sU'$text$match,PREG_SET_ORDER);   // Hitta variabler
5:
   $retval '';
6:
   foreach($match as $i => $value)
7:
   {
8:
      foreach($match[$i] as $i2 => $value2)
9:
      {
10:
         if($i2 == 1)
11:
         {
12:
            if($i != count($match) - 1)
13:
            {
14:
               $retval .= $match[$i][$i2]. ',';
15:
            }
16:
            elseif($i == count($match) - 1)
17:
            {
18:
               $retval .= $match[$i][$i2];
19:
               return $retval .= ';';
20:
            }
21:
         }
22:
      }
23:
   }
24:
}
25:
 


fick hjälp av wedge med orginal funktionen
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
lilleman
Ex-Moderator



Medlem i: 5883 dagar
Från: Örebro
Status: Offline



#287342
Inlägg Skrivet: 2005-05-01 15:55      Ämne: Citera

En funktion som genererar en slumpad sträng utifrån en lista av tecken:

PHP:
1:
 function getRandomString($chars$length)
2:
{
3:
  for( $string nullstrlen($string) < $length;
4:
    $string .= $chars{mt_rand(0,strlen($chars)-1)});
5:
  
6:
  return $string;
7:

PHP:
1:
 echo getRandomString('abcdefgh'5); 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
lilleman
Ex-Moderator



Medlem i: 5883 dagar
Från: Örebro
Status: Offline



#290196
Inlägg Skrivet: 2005-05-14 01:13      Ämne: Citera

En funktion som kan användas för att hämta en lista över alla mappar och/eller filer i en mapp:

PHP:
1:
 function listFolder($folder$types 0)
2:
{
3:
  $functions = array(
4:
      => 'is_dir',
5:
      => 'is_file'
6:
    );
7:
  
8:
  $folderList = array();
9:
  
10:
  foreach( glob"$folder/*" ) as $currentItem )
11:
  {
12:
    if( $types == or $types == )
13:
    {
14:
      if( $functions[$types]($currentItem) )
15:
        $folderList[] = basename($currentItem);
16:
    }
17:
    else $folderList[] = basename($currentItem);
18:
  }
19:
  
20:
  return $folderList;
21:


Det första argumentet anger vilken mapp som ska genomsökas. Det andra argumentet styr vad som ska hämtas. Möjliga värden är:
  • 0 - Hämtar både filer och mappar.
  • 1 - Hämtar bara mappar.
  • 2 - Hämtar bara filer.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
cyph1e



Medlem i: 5301 dagar

Status: Offline



#290466
Inlägg Skrivet: 2005-05-15 22:13      Ämne: Citera

thr skrev:
Konverterar HEX-Färgkoder (tex: FF00FF) till RGB (Tex: 255-0-255)
Kompenserar automatiskt för # i början av HEX-koden.
PHP:
1:
<?php
2:
function hex2rgb($hex){
3:
   if(substr($hex,0,1) == "#")
4:
      $hex substr($hex,1,6);
5:
   $return[] = hexdec(substr($hex,0,2));
6:
   $return[] = hexdec(substr($hex,2,2));
7:
   $return[] = hexdec(substr($hex,4,2));
8:
   return $return;
9:
}
10:
?>


Exempel:
PHP:
1:
<?php
2:
$rgb hex2rgb("FF00FF");
3:
print_r($rgb);
4:
?>


Välldigt simpelt script, men för dem som inte vet hur man gör så kan det vara bra att ha :)

Du bör beräkna r-, g- och b-valörerna bitvis, istället för att använda dig av en sträng.
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Oxymoron
Ex-Moderator



Medlem i: 6033 dagar
Från: Uppsala
Status: Offline



#293754
Inlägg Skrivet: 2005-06-03 04:20      Ämne: Citera

Här är ett script för att rensa ut htmlentities som inte finns inte är valid enligt php, men som ändå förekommer ibland. Konstigt nog verkar det inte gå att göra med en xml-parser...

PHP:
1:
 
2:
function filterInvalidEntities($data)
3:
{
4:
   preg_match_all('/&([^;])+;/',$data,$matches);
5:
   $filter create_function('$var','return !array_search($var, get_html_translation_table(HTML_ENTITIES));');
6:
   $unwanted array_filter($matches[0],$filter);
7:
   return str_replace($unwanted,'',$data);
8:
}
9:
 
 

_________________
http://emilhernvall.github.io/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
fjutte



Medlem i: 5325 dagar
Från: Gotland/Göteborg
Status: Offline



#294077
Inlägg Skrivet: 2005-06-05 00:39      Ämne: Ta reda på en födelsedags stjärntecken Citera

Ta reda på en födelsedags stjärntecken
PHP:
1:
 function get_zodiac_sign($month$day)
2:
{
3:
// Validera argumenten
4:
if ($month || $month 12 || $day || $day 31)
5:
return (false);
6:
 
7:
// Startdag för stjärnbilderna (startmånad är vektor-index+1)
8:
$signs = array(
9:
array("20" => "Vattuman"),
10:
array("19" => "Fisk"),
11:
array("21" => "Vädur"),
12:
array("20" => "Oxe"),
13:
array("21" => "Tvilling"),
14:
array("22" => "Kräfta"),
15:
array("23" => "Lejon"),
16:
array("23" => "Jungfru"),
17:
array("23" => "Våg"),
18:
array("24" => "Skorpion"),
19:
array("22" => "Skytt"),
20:
array("22" => "Stenbock")
21:
);
22:
 
23:
list($sign_start$sign_name) = each($signs[(int)$month-1]);
24:
if ($day $sign_start)
25:
list($sign_start$sign_name) = each($signs[($month -0) ? $month 11$month -= 2]);
26:
return $sign_name
27:
}
28:
 


Syntax
PHP:
1:
 echo get_zodiac_sign(516); 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
fjutte



Medlem i: 5325 dagar
Från: Gotland/Göteborg
Status: Offline



#294078
Inlägg Skrivet: 2005-06-05 00:43      Ämne: Eregi Citera

Använder denna för en community där använarnamn och lösenord bara får innehålla bokstäver A-Z samt siffror

PHP:
1:
 
2:
if(!ereg(^[a-z0-9]+$”$namn)){
3:
echo ”Felaktiga tecken i strängen”;
4:
exit;
5:
}
6:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
BlueEyes



Medlem i: 5659 dagar
Från: Västerås, Sweden
Status: Offline



#294991
Inlägg Skrivet: 2005-06-10 12:28      Ämne: Funktion för att hämta antalet ord i en sträng Citera

Hej gott ord tänkte dele med mig av en enkel funktion jag
konstruerat för att hämta ett specifierat antal ord ur en sträng.

Funktionen letar efter mellanrum mellan orden och hugger av dom
till en array.
Denna array limmas sedan ihop och bildar strängen som skickas tillbaka
dock med endast dom antal ord man vill ha.

Ja ni fattar om ni tittar i koden

PHP:
1:
 
2:
<?PHP
3:
 
4:
function get_words($string$nr_words) {
5:
// BlueEyes Get Words funktion för att hämta antalet ord ur en sträng
6:
// http://www.magnusbonnevier.se
7:
// Funktionen hämtar ut och returnerar angivet antal ord.
8:
 
9:
// Här delar vi strängen varje tillfälle som ett mellanrum hittas.
10:
// Förhoppningsvis mellan ord Wink
11:
$ord_array explode(' 'trim($string));
12:
 
13:
// Här ser vi till att hugga av arrayn vid ett visst antal ord
14:
$slut_string array_slice($ord_array0$nr_words);
15:
 
16:
// Här ska vi försöka limma ihop dom ord som blir kvar.
17:
$string implode(' '$slut_string);
18:
 
19:
// Till slut rensa bort mellan rum efter och före strängen
20:
$string trim($string);
21:
 
22:
// Och skicka tillbaka strängen
23:
return $string;
24:
}
25:
 
26:
// get_words(string, antal_ord)
27:
 
28:
echo(get_words("Hej Hoppsan sa över bäcken""10"));
29:
 
30:
?>
31:
 


Samma som ovan fast utan kommentarer:
PHP:
1:
 
2:
<?PHP
3:
 
4:
function get_words($string$nr_words) {
5:
// BlueEyes Get Words funktion för att hämta antalet ord ur en sträng
6:
// http://www.magnusbonnevier.se
7:
// Funktionen hämtar ut och returnerar angivet antal ord.
8:
 
9:
$ord_array explode(' 'trim($string));
10:
$slut_string array_slice($ord_array0$nr_words);
11:
$string implode(' '$slut_string);
12:
$string trim($string);
13:
return $string;
14:
}
15:
 
16:
// get_words(string, antal_ord)
17:
 
18:
echo(get_words("Hej Hoppsan sa över bäcken""10"));
19:
 
20:
?>
21:
 




Hoppas det kan komma någon till nytta!

Mvh, BlueEyes
 

_________________
--------------------------------------
http://www.magnusbonnevier.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Oxymoron
Ex-Moderator



Medlem i: 6033 dagar
Från: Uppsala
Status: Offline



#305130
Inlägg Skrivet: 2005-08-11 18:03      Ämne: Citera

Letade nyss efter en xor-krypterings-funktion här, och hittade av någon mysko anledning ingen färdig. Fick avsätta säkert 5 minuter till att skriva en ny. Sad

PHP:
1:
 
2:
<?php
3:
function xorencode$text$key )
4:
{
5:
   $res "";
6:
   $keylen strlen$key );
7:
 
8:
   for ( $i 0$i strlen$text ); $i++ ) {
9:
      $res .= chrord$text$i } ) ^ ord$key$i $keylen } ) );
10:
   }
11:
 
12:
   return $res;
13:
}
14:
?>
15:
 
 

_________________
http://emilhernvall.github.io/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
cleanbeach



Medlem i: 5021 dagar

Status: Offline



#354440
Inlägg Skrivet: 2006-02-19 15:28      Ämne: Beräkning av ålder skript räknar lite fel.... Citera

lilleman skrev:
Denna funktion kan användas för att räkna ut hur många år, månader och dagar som gått sedan ett visst datum. Den fungerar även på datum före '1970-01-01'. Formatet på datumet ska vara 'år-månad-dag', t.ex. '1939-09-01'.

PHP:
1:
 function getdiff($fromDate)
2:
{
3:
  list($thisYear$thisMonth$thisDay$thisDoY$thisDiM) = explode('.'date('Y.n.j.z.t'));
4:
 
5:
  list($fromYear$fromMonth$fromDay) = preg_split('/-0?/'$fromDate);
6:
  $fromDoY date('z'mktime(0,0,0$fromMonth$fromDay$thisYear));
7:
  if( $fromDoY == $thisDoY ) return array($thisYear-$fromYear00);
8:
 
9:
  $passedYears = ( $thisYear $fromYear );
10:
 
11:
  $passedMonths = ( $fromDoY $thisDoY ) ? 12-( $fromMonth-$thisMonth ) : $thisMonth-$fromMonth;
12:
  $passedDays = ( $thisDay $fromDay ) ? $thisDiM-( $fromDay-$thisDay ) : $thisDay-$fromDay;
13:
 
14:
  if( $fromDoY $thisDoY $passedYears--;
15:
  if( $thisDay $fromDay $passedMonths--;
16:
 
17:
  return array($passedYears$passedMonths$passedDays);
18:

PHP:
1:
 $result getdiff('1939-09-01');
2:
echo sprintf('%d år, %d månader och %d dagar',
3:
  $result[0], $result[1], $result[2]); 


Hej!
Det verkar som detta skript räknar lite fel.

Har lagt in ett födelse datum 2004-03-26 och skriptet räknar ut att åldern ska vara 1 år 10 månader 21 dagar.

Om man räknar själv så ska det vara 1 år 10 månader 24 dagar......

Jag gjorde beräkningen idag: 2006-02-19

Är det någon som har koll på vad det är för fel.

-Det är rätt datum på servern.

//mikael
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
bubach



Medlem i: 6139 dagar
Från: Lilla Edet (söder om Trollhättan)
Status: Offline



#356773
Inlägg Skrivet: 2006-03-01 15:13      Ämne: Citera

en kodsnutt liknande lillemans.
tämligen fult kodat, skulle uppskatta om nån orkade påpeka bättre sätt..
skicka in ett personnummer, typ 850521 och den returnerar ålder i år:
PHP:
1:
<?php
2:
function getage($personalnumber)
3:
{
4:
  $date date('Y-m-d');
5:
  $fullyear substr($date04);
6:
  $year substr($date22);
7:
  $month substr($date52);
8:
  $day substr($date82);
9:
 
10:
  $pyear substr($personalnumber02);
11:
  $pmonth substr($personalnumber22);
12:
  $pday substr($personalnumber42);
13:
 
14:
  $year = (int) $year;
15:
  $pyear_test = (int) $pyear;
16:
  if($year $pyear_test) { $pfullyear "19".$pyear; }
17:
  else { $pfullyear "20".$pyear; }
18:
 
19:
  $fullyear = (int) $fullyear;
20:
  $pfullyear = (int) $pfullyear;
21:
  $age $fullyear $pfullyear;
22:
 
23:
  $pmonth = (int) $pmonth;
24:
  $month = (int) $month;
25:
  $pday = (int) $pday;
26:
  $day = (int) $day;
27:
  if ( ($pmonth $month) || (($pmonth == $month) && ($pday $day)) ) {
28:
    $age--;
29:
  }
30:
  return $age;
31:
}
32:
?>
 

_________________
http://bos.asmhackers.net - http://förklara.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Malte
in memoriam 1



Medlem i: 6456 dagar
Från: Tingsryd
Status: Offline



#356779
Inlägg Skrivet: 2006-03-01 15:37      Ämne: Citera

bubach skrev:
skulle uppskatta om nån orkade påpeka bättre sätt..
skicka in ett personnummer, typ 850521 och den returnerar ålder i år:


Då skulle man kunna utgå från http://www.phpportalen.net/viewtopic.php?p=196161#196161
och komma fram till:
PHP:
1:
 function get_age($personalnumber)
2:
{
3:
   preg_match_all("/\d{2}/"$personalnumber$match);
4:
   list ($year$month$day) = $match[0];
5:
   
6:
   $year += date('y') > $year 2000 1900;
7:
 
8:
   $age date("Y") - $year;
9:
   
10:
   if (date("z") < date("z"strtotime(date("Y").'-'.$month.'-'.$day))) {
11:
      $age--;
12:
   }
13:
   
14:
   return $age;
15:
 
16:
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
Walkman
Ex-Moderator



Medlem i: 4975 dagar
Från: Vaxholm (bor i Göteborg)
Status: Offline



#368117
Inlägg Skrivet: 2006-04-08 02:07      Ämne: Citera

Kod för att 'generera' LoremIpsum text. Texten är hämtad från en hemsida (www.lipsum.com) och funktionen kräver "libcurl" (också kallat enbart "curl"?)...

Vad den gör:
Går till sidan som genererar LoremIpsum text, läser ut vart textblocket börjar och slutar, varav den tar bort allting runtomkring. Efter det så lägger den till en kommentar i slutet på texten... en credit-rad, typ Smile

PHP:
1:
 
2:
   /* Generate LoremIpsum text */
3:
   function LoremIpsum($amount) {
4:
      #--> Variables
5:
      $ipsum_url   "http://www.lipsum.com/feed/html";
6:
 
7:
      /* CURL Method */
8:
      #--> Open handle
9:
      $c_handle curl_init();
10:
 
11:
      #--> Set URL
12:
      curl_setopt($c_handleCURLOPT_URL$ipsum_url);
13:
 
14:
      #--> If it fails, then 'end' silently
15:
      curl_setopt($c_handleCURLOPT_FAILONERROR1);
16:
 
17:
      #--> Allow redirects
18:
      curl_setopt($c_handleCURLOPT_FOLLOWLOCATION1);
19:
 
20:
      #--> Do we want a returnvalue? (1 = YES)
21:
      curl_setopt($c_handleCURLOPT_RETURNTRANSFER1);
22:
 
23:
      #--> Time out after this many seconds
24:
      curl_setopt($c_handleCURLOPT_TIMEOUT3);
25:
 
26:
      #--> Set "POST" to 'true'
27:
      curl_setopt($c_handleCURLOPT_POST1);
28:
 
29:
      #--> Specify POST fields
30:
      curl_setopt($c_handleCURLOPT_POSTFIELDS"amount=" $amount "&what=words&start=yes");
31:
 
32:
      #--> Execute CURL query; store the HTML doc we get in result
33:
      $result curl_exec($c_handle); // run the whole process
34:
      
35:
      #--> Close handle
36:
      curl_close($c_handle);
37:
 
38:
      #--> Find out where the DIV starts / stops
39:
      $div_start   strpos($result"<div id=\"lipsum\">")  + strlen("<div id=\"lipsum\">");
40:
      $div_stop   strpos($result"</div>"$div_start);
41:
 
42:
      #--> Extract ;>
43:
      $result      substr($result$div_start, -($div_start $div_stop));
44:
 
45:
      if($result) {
46:
         return ($result "\n<!-- Credits to LoremIpsum at \"http://www.lipsum.com/\" -->");
47:
      }
48:
   }
49:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Adam4444



Medlem i: 5167 dagar

Status: Offline



#387384
Inlägg Skrivet: 2006-06-14 14:49      Ämne: Citera

En fuktion som kollar ifall ett tal är jämt eller udda.

Syntax: string OddOrEven ( int num )
Parametrar:
Den första och enda parametern är talet som man vill kolla ifall det är jämt eller udda.
Parametern måste vara av typen "integer" (heltal) annrs kommer funktionen att generar ett felmeddelande.

Funktionen returnerar "even" ifall talet är jämt och "odd" ifall det är udda.

PHP:
1:
 function OddOrEven($num) {
2:
    if(!is_int($num)) {
3:
       trigger_error("OddOrEven(): The parmeters are not of the correct data type (integers)"E_USER_ERROR);
4:
   }
5:
   if($num == 0) {
6:
       return "even";
7:
   }
8:
   else {
9:
       return "odd";
10:
   }
11:


Exempel på hur det kan användas:
PHP:
1:
 $number 10;
2:
if(OddOrEven($number) == "even") echo "$number är ett jämt tal"


Vet inte ifall det redan finns en sån här funktion, orkar inte kolla igenom, isåna fall så finns det en till Wink
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3, 4, 5, 6, 7  Nästa
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic