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 1, 2, 3, 4, 5, 6, 7  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
thr
Inaktiverad



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



#133312
Inlägg Skrivet: 2004-02-09 23:48      Ämne: Tråden för användbara funktioner Citera

Tänkte, att en tråd med användbara funktioner som är så små att dem inte platsar i scriptarkivet(syftar på något i stil med de 2 senaste jag la till, RGB->HEX och HEX->RGB) kunde ligga i en tråd som var klistrad överst i forumet.

Om ni samtycker kan ni ju klistra in små och användbara funktioner ni har, Klistrar in mina två från scriptarkivet iaf.
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
thr
Inaktiverad



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



#133315
Inlägg Skrivet: 2004-02-09 23:49      Ämne: Citera

En funktion som ovandlar RGB värden till HTML-HEX Koder.
PHP:
1:
<?php
2:
function rgb2hex($rgb){
3:
   if(!is_array($rgb) || count($rgb) != 3){
4:
      echo "Argument must be an array with 3 integer elements";
5:
      return false;
6:
   }
7:
   for($i=0;$i<count($rgb);$i++){
8:
      if(strlen($hex[$i] = dechex($rgb[$i])) == 1)
9:
         $hex[$i] = "0".$hex[$i];
10:
   }
11:
   return $hex;
12:
}
13:
?>



Exempel:
PHP:
1:
<?php
2:
$hex rgb2hex(array(255,0,255));
3:
print_r($hex);
4:
?>


Senast ändrad av thr den 2004-02-09 23:50, ändrad totalt 1 gång
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
thr
Inaktiverad



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



#133316
Inlägg Skrivet: 2004-02-09 23:49      Ämne: Citera

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 Smile
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Malte
in memoriam 1



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



#133364
Inlägg Skrivet: 2004-02-10 01:41      Ämne: Citera

Även om funktionerna är lite små, så går det lägga flera i samma tråd i skriptarkivet.

Klistrar denna tråd överst i skriptarkivet, samt tar bort de två trådar thr la upp där med samma funktioner.
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
thr
Inaktiverad



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



#133849
Inlägg Skrivet: 2004-02-11 03:24      Ämne: Citera

För att kolla vilken typ av dag ett datum är Smile
PHP:
1:
<?php
2:
   function mktime_day($d,$m,$y){
3:
      $d date('l',mktime(0,0,0,$m,$d,$y));
4:
      switch($d){
5:
         case 'Monday':
6:
            return 'Måndag';
7:
            break;
8:
         case 'Tuesday':
9:
            return 'Tisdag';
10:
            break;
11:
         case 'Wednesday':
12:
            return 'Onsdag';
13:
            break;
14:
         case 'Thursday':
15:
            return 'Torsdag';
16:
            break;
17:
         case 'Friday':
18:
            return 'Fredag';
19:
            break;
20:
         case 'Saturday':
21:
            return 'Lördag';
22:
            break;
23:
         case 'Sunday':
24:
            return 'Söndag';
25:
            break;
26:
         default:
27:
            return false;         
28:
      }
29:
   }
30:
   /* Example: mktime_day(24,03,2025);
31:
   */
32:
?>


Vill du ha engelska namn på dagarna så är det bara att använda denna funktionen istället:
PHP:
1:
<?php
2:
   function mktime_day($d,$m,$y){
3:
      return date('l',mktime(0,0,0,$m,$d,$y));
4:
   }
5:
   /* Example: mktime_day(24,03,2025);
6:
   */
7:
?>
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
zng



Medlem i: 5828 dagar

Status: Offline



#134306
Inlägg Skrivet: 2004-02-12 02:45      Ämne: Citera

Inte så användbart kanske, men här är 2 funktioner för att hantera LongIP. Ett för att konventera vanligt IP till LongIP, och ett som gör motsatsen.

PHP:
1:
 function IPtoLongIP ($ip) { //Vanligt IP till långt IP
2:
   $array explode(".",$ip);
3:
   $result 0;
4:
   for($i=0$i<=3$i++) {
5:
      if($i!=3)
6:
      $array[$i] = $array[$i]*(pow(256,(3-$i)));
7:
      $result += $array[$i];
8:
   }
9:
return $result;
10:
}
11:
 
12:
function LongIPtoIP ($long) { //Långt IP till vanligt IP
13:
   for($i=3$i>=0$i--) {
14:
    $temp = (int)($long pow(256,$i));
15:
    $result $result.$temp.".";
16:
    $long $long-($temp*(pow(256,$i)));       
17:
   }
18:
return substr($result,0,-1);
19:
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
thr
Inaktiverad



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



#138645
Inlägg Skrivet: 2004-02-20 20:14      Ämne: Citera

Notera: detta scriptet är saxxat ur en annan tråd som jag skrev i


Kollar födelsedagar mot en array.

1:a argumentet är en array med födelsedagar, om man inte vet om året dem är födda skriver man in 0.
2:a är valfritt, om du tar detta så väljer den alla som fyller år innom X antal dagar framåt också.

PHP:
1:
<?php
2:
 
3:
$birthdays = array(
4:
  array(2,22,0,"test22feb"), 
5:
  array(6,9,1934,"Kalle Anka"),
6:
  array(2,14,0,"Lara Croft"),
7:
  array(10,17,1937,"Knatte, Fnatte och Tjatte"),
8:
  array(3,27,1901,"Carl Barks"),
9:
  array(6,29,1951,"Don Rosa"),
10:
  array(8,29,1905,"Al Taliaferro"),
11:
  array(5,5,1905,"Floyd Gottfredson"),
12:
  array(1,4,1975,"test"),
13:
  array(2,20,1985,"thr")
14:
);
15:
 
16:
function getBirthday($array,$advance=0)
17:
{
18:
 
19:
   $return = array();
20:
 
21:
   /**
22:
   * Vet inte riktigt vad jag ska med svMonth och svDay till, men dem ligger här iaf.
23:
   */
24:
   $seMonth = array ( => "januari""februari""mars""april""maj""juni""juli""augusti""september""oktober""november""december" );
25:
   $seDay = array ( "Sunday" => "söndag""Monday" => "måndag""Tuesday" => "tisdag""Wednesday" => "onsdag""Thursday" => "torsdag""Friday" => "fredag""Saturday" => "lördag" );
26:
   
27:
   /**
28:
   * Plocka fram dagens datum, och eventuell "advance" - tid framåt.
29:
   */
30:
   $today mktime(1,1,1,date('n'),date('j'),date('Y'));
31:
   $advance $today + ((($advance*24)*60)*60);
32:
   
33:
   /**
34:
   * Plocka fram födelsedagar samt de som vi kollar i framtiden
35:
   */
36:
   for($i=0;$i<count($array);$i++)
37:
   {
38:
      $birthday mktime(1,1,1,$array[$i][0],$array[$i][1],date('Y'));
39:
      if($birthday == $today)
40:
      {
41:
         $return['today'][$i]['person'] = $array[$i][3];
42:
         $return['today'][$i]['age'] = ( $array[$i][2] == "Unkown" date('Y')-$array[$i][2]);
43:
      }
44:
      elseif($birthday >= $advance && $birthday <= $advance)
45:
      {
46:
         $return['advance'][$i]['person'] = $array[$i][3];
47:
         $return['advance'][$i]['age'] = ( $array[$i][2] == "Unkown" date('Y')-$array[$i][2]);
48:
         $return['advance'][$i]['day'] = $seDay[date('l',$birthday)];
49:
         $return['advance'][$i]['month'] = $seMonth[date('n',$birthday)];
50:
      }
51:
   }
52:
   
53:
   /**
54:
   * Sortera och returnera våran array med födelsedagar
55:
   */
56:
   sort($return['today']);
57:
   sort($return['advance']);
58:
   return $return;
59:
}
60:
 
61:
 
62:
/*
63:
* Exempel; väljer alla dagens födelsedagar och de som händer två dagar in i framtiden
64:
*/
65:
print_r(getBirthday($birthdays,2));
66:
 
67:
?>
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
18195



Medlem i: 5835 dagar
Från: Stockholm
Status: Offline



#139276
Inlägg Skrivet: 2004-02-22 00:21      Ämne: Citera

Liten snutt som skriver ut vilka sökningar på Google som gjort att dina besökare hamnat hos dig.
logg - tabellen du sparar besöksloggen i
ref - kollumnen där referer sparas

PHP:
1:
 $result mysql_query("SELECT SUBSTRING_INDEX(ref, 'q=', -1) AS ref FROM logg WHERE ref LIKE '%google%' ORDER BY ref");
2:
while ($myrow mysql_fetch_array($result)) {
3:
   $var explode('&',$myrow['ref']);
4:
   $var utf8_decode(urldecode($var[0]));
5:
   echo $var '<br>';
6:
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
@nders



Medlem i: 5578 dagar
Från: Förvisad till Stockholm
Status: Offline



#139419
Inlägg Skrivet: 2004-02-22 12:11      Ämne: Citera

En mycket användbar funktion som kollar hur många som är online på InterStadt. Wink
PHP:
1:
<?php
2:
/* Kollar hur många det är online på InterStadt */
3:
 
4:
function interstadt() {
5:
   $contents file_get_contents("http://community.riklund.org/index.php");
6:
   preg_match("/gfx\/digits\/([0-9]+)\.png/"$contents$data);
7:
   return $data[1];
8:
}
9:
 
10:
// Exempel
11:
echo "Det är ".interstadt()." medlem(mar) online.";
12:
?>

Som sagt; mycket användbar. Rolling Eyes

Senast ändrad av @nders den 2004-02-25 17:43, ändrad totalt 1 gång
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Marty



Medlem i: 5692 dagar
Från: Uppsala, Sweden
Status: Offline



#141065
Inlägg Skrivet: 2004-02-25 17:06      Ämne: Unik MD5 Citera

Denna funktion kan vara bra om man vill förvissa sig om att man får en unik MD5 till sessions-id:t (eller annat id). Om man vill så kan man med gott samvete ta bort databasdelen.

PHP:
1:
<?
2:
 
3:
/*
4:
 * uniqmd5.php
5:
 * Creates a unique MD5 hash, to be used for primary key in tables.
6:
 * Optional arguments can be supplied to increase the randomness.
7:
 * The function checks if the MD5 is really unique before it is
8:
 * returned.
9:
 *
10:
 * Example: $md5 = uniqmd5(filesize('./index.php'), $_SERVER['PHP_SELF']);
11:
 * Author: Martin Larsson <marty@marty.nu>
12:
 * Modified: 2004-02-25
13:
 */
14:
 
15:
/*
16:
-- SQL
17:
   CREATE TABLE uniqmd5 (
18:
      uniqmd5 CHAR(32),
19:
      PRIMARY KEY (uniqmd5)
20:
   );
21:
 */
22:
 
23:
if (!defined("__UNIQMD5__")):
24:
define("__UNIQMD5__"true);
25:
 
26:
// Put some nonsense junk here to make it impossible to bruteforce the MD5
27:
define("UNIQMD5_SALT""asdjlksajgagjölkasjgsagj");
28:
 
29:
// Which database table to store MD5's in (to ensure uniqueness)
30:
define("UNIQMD5_TABLE""uniqmd5");
31:
 
32:
function uniqmd5() {
33:
   $entropy = array(
34:
      (string) microtime(),
35:
      (string) @getmypid(),
36:
      (string) @disk_free_space('.'),
37:
      (string) @$_SERVER['PHP_SELF'],
38:
      (string) ip2long($_SERVER['REMOTE_ADDR']),
39:
      (string) $_SERVER['REMOTE_PORT']      
40:
   );
41:
   $user_entropy = array();
42:
   $num_args func_num_args();
43:
   for ($i 0$i $num_args$i++) {
44:
      if (is_array(func_get_arg($i))) {
45:
         $arr func_get_arg($i);
46:
         for ($j 0$j count($arr); $j++)
47:
            $user_entropy[] = (string) $arr[$j];
48:
      }
49:
      else $user_entropy[] = (string) func_get_arg($i);
50:
   }
51:
   $md5 md5(implode(UNIQMD5_SALTarray_merge($entropy$user_entropy)));
52:
   $result mysql_query("SELECT uniqmd5 FROM " UNIQMD5_TABLE " WHERE uniqmd5 = '$md5'");
53:
   if (mysql_num_rows($result) == 1) return uniqmd5($user_entropy);
54:
   mysql_query("INSERT INTO " UNIQMD5_TABLE " (uniqmd5) VALUES ('$md5')");
55:
   return $md5;
56:
}
57:
 
58:
endif;
59:
 
60:
?>
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Surfaren



Medlem i: 6006 dagar
Från: Stockholm
Status: Offline



#141068
Inlägg Skrivet: 2004-02-25 17:16      Ämne: Citera

Danke schön, Marty. Jag satt just och grubblade på hur jag skulle få fram en säkert unik sträng. Kan gå åt skogen med en viss sökning annars... Rolling Eyes
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
hagman
Ex-Moderator



Medlem i: 6144 dagar
Från: Luvlieluspie
Status: Offline



#141098
Inlägg Skrivet: 2004-02-25 17:48      Ämne: Citera

Här är min lilla bash echo wrapper så man kan skriva ut färger i konsollen.

PHP:
1:
 function becho($str)
2:
{
3:
    echo `echo -en "${str}"`;
4:
    flush();
5:
 

_________________
haggeluring
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



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



#148857
Inlägg Skrivet: 2004-03-13 13:02      Ämne: Citera

Plockade bort några tramsinlägg från denna tråden.

Vore tacksam om vi kunde hålla oss till seriösa inlägg i den.
 

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



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



#161037
Inlägg Skrivet: 2004-04-14 16:53      Ämne: Citera

Borde det inte räcka med md5(uniqid(mt_rand())) för att få något tillräckligt slumpat?
 

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



Medlem i: 5692 dagar
Från: Uppsala, Sweden
Status: Offline



#164781
Inlägg Skrivet: 2004-04-25 00:17      Ämne: Rättstavare (Engelska) Citera

Här kommer ett litet script som rättar vanliga stavfel i engelsk text. Det kan t.ex. vara bra att köra på en artikel eller liknande innan den sparas i databasen. Observera att du behöver ladda hem filen spell_db.php för att använda denna funktion (se länk i kommentaren i scriptet).

PHP:
1:
<?
2:
 
3:
/*
4:
 * spell.php
5:
 * Corrects common misspellings in the English language. Replaces all
6:
 * words that are misspelled with correct spelling. Preserves case.
7:
 * Dependencies: http://www.marty.nu/spell_db.phps (save as spell_db.php)
8:
 * Source: http://en.wikipedia.org/wiki/Wikipedia:List_of_common_misspellings
9:
 *
10:
 * Example: echo(spell("Mispelling is a common misspelling."));
11:
 *
12:
 * Author: Martin Larsson <marty@marty.nu>
13:
 * Modified: 2004-04-25
14:
 */
15:
 
16:
 
17:
if (!defined("__SPELL__")):
18:
define("__SPELL__"true);
19:
 
20:
function spell($text) {
21:
   require_once("spell_db.php");
22:
   $wrong array_keys($spell);
23:
   preg_match_all('/\b[^\b\s]+\b/'$text$matches);
24:
   $words $matches[0];
25:
   $count count($words);
26:
   for ($i 0$i $count$i++) {
27:
      $word $words[$i];
28:
      unset($replace);
29:
 
30:
      if (strtolower($word) == $word) {
31:
         if (in_array($word$wrong))
32:
            $replace $spell[$word];
33:
         else if (in_array(ucfirst($word), $wrong))
34:
            $replace strtolower($spell[ucfirst($word)]);
35:
      } else if (strtoupper($word) == $word) {
36:
         if (in_array(strtolower($word), $wrong))
37:
            $replace strtoupper($spell[strtolower($word)]);
38:
         else if (in_array(ucfirst(strtolower($word)), $wrong))
39:
            $replace strtoupper($spell[strtolower($word)]);
40:
      } else if (ucfirst($word) == $word) {
41:
         if (in_array(strtolower($word), $wrong))
42:
            $replace ucfirst($spell[strtolower($word)]);
43:
         else if (in_array($word$wrong))
44:
            $replace $spell[$word];
45:
      }
46:
 
47:
      if (isset($replace)) { // a misspelling has been found!
48:
         $text preg_replace('/\b' $word '\b/'$replace$text);
49:
      }
50:
   }
51:
   return $text;
52:
}
53:
 
54:
endif;
55:
 
56:
?>
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 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