Ergebnis 1 bis 9 von 9

Thema: Die TP Code-Schnipsel Sammlung

  1. #1
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Die TP Code-Schnipsel Sammlung

    Hallo Dynamiker

    In diesem Sammelthread, der kontinuierlich ausgebaut wird, sollen zukünftig nützliche Code-Schnipsel und Funktionen bereitgestellt werden, die einem das Programmierer-Leben erleichtern sollen.
    Damit die Übersichtlichkeit gewahrt bleibt ist dieser Thread geschlossen und kann nur durch TP-Mitarbeiter erweitert werden. Das heißt aber nicht das Du nicht aktiv am Ausbau der Sammlung teilnehmen kannst, ganz im Gegenteil - es ist sogar ausdrücklich erwünscht das Forum Mitglieder ihren Teil dazu beitragen!

    Wenn Du also einen nützlichen Code-Schnipsel, respektive Funktion, hast die auch anderen Programmierern Arbeit abnehmen können, zögere nicht diesen per PN an mich oder einen anderen Moderator zu schicken. Allerdings bitten ich Dich um Verständnis falls der Code nicht in die Sammlung aufgenommen wird, da wirklich nur die nützlichsten Schnipsel aufgeführt werden sollen. Bei komplexeren Snippets bitte nicht vergessen den Code zu kommentieren, damit man auch sofort weiß um was es geht.
    Jetzt aber viel Spaß beim stöbern


    Themenübersicht / Inhalt
    Geändert von phpBuddy (29.07.2007 um 00:06 Uhr)

  2. #2
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Array-Funktionen

    Mehrdimensionales Array nach Kriterien sortieren. Hier geh't zum original Thread

    PHP-Code:
    <?php
    function get_orderarray($order)
    {
            
    $order_arr =array();
            
    $orders=explode('|',$order);
            foreach (
    $orders as $o)
            {
                    
    $d=explode(',',$o);
                    
    $order_arr[]=array($d[0],$d[1]);
            }
            return 
    $order_arr;
    }

    // extended to allow sort direction per field sorted against
    function arfsort_func$a$b ){
      foreach( 
    $GLOBALS['__ARFSORT_LIST__'] as $f ) {
        switch (
    $f[1]) { // switch on ascending or descending value
          
    case "d":
            
    $strc strcmpstrtolower($b[$f[0]]), strtolower($a[$f[0]]) );
            if ( 
    $strc != ){
              return 
    $strc;
            }
          break;
          case 
    "a":
            
    $strc strcmpstrtolower($a[$f[0]]), strtolower($b[$f[0]]) );
            if ( 
    $strc != ){
              return 
    $strc;
            }
          break;
          case 
    "D":
            
    $strc = (floatval($b[$f[0]])<floatval($a[$f[0]])) ? -1:1;
            if (
    $b[$f[0]]!=$a[$f[0]])
            {
              return 
    $strc;
            }
          break;
          case 
    "A":
            
    $strc = (floatval($b[$f[0]])>floatval($a[$f[0]])) ? -1:1;
            if (
    $b[$f[0]]!=$a[$f[0]])
            {
              return 
    $strc;
            }
          break;
        }
      }
      return 
    0;
    }

    function 
    arfsort$a$fl )
    {
      
    $GLOBALS['__ARFSORT_LIST__'] = $fl;
      
    usort$a'arfsort_func' );
      return 
    $a;
    }

    /*
    Anwendung:
    $sortiertes array = arfsort( $array, get_orderarray($order));

    $order => 'feldname,Richtung+Typ|feldname2,Richtung+Typ|...'

    a=ascending (aufsteigend nach Stringlogik)
    d=descending (absteigend nach Stringlogik)
    A=ascending (aufsteigend nach Wertelogik)
    D=descending (absteigend nach Wertelogik)
    */

    // Anwendungsbeispiel

    $array=array(
    => array(
        
    'Nachname' => 'Muster',
        
    'Name' => 'Otto',
        
    'Alter' => 27,
        
    'Skills' => array('PHP'=>8,'MySQL'=>6,'C++'=>2)
        ),
    => array(
        
    'Nachname' => 'Müller',
        
    'Name' => 'Heinz',
        
    'Alter' => 46,
        
    'Skills' => array('PHP'=>2,'MySQL'=>9,'C++'=>9)
        ),
    => array(
        
    'Nachname' => 'Müller',
        
    'Name' => 'Otto',
        
    'Alter' => 24,
        
    'Skills' => array('PHP'=>8,'MySQL'=>7,'C++'=>2)
        )
    );

    echo 
    "<pre>";
    echo 
    "Array vorher:<br>";
    print_r($array);
    echo 
    "-------------------------------------<br>";
    echo 
    "Sortiert nach Nachname und anschließend nach Vorname aufsteigend:<br>";
    print_r(arfsort($arrayget_orderarray('Nachname,a|Name,a')));
    echo 
    "-------------------------------------<br>";

    echo 
    "Sortiert nach PHP-Skills absteigend, bei Gleichheit nach Alter aufsteigend:<br>";
    print_r(arfsort($arrayget_orderarray('PHP,A|Alter,A')));
    echo 
    "-------------------------------------<br>";

    echo 
    "Sortiert nach MySQL-Skills absteigend, dann nach PHP-Skills absteigend - bei Gleichheit nach Alter aufsteigend:<br>";
    print_r(arfsort($arrayget_orderarray('MySQL,D|PHP,D|Alter,A')));
    echo 
    "-------------------------------------<br>";

    echo 
    "</pre>";

    ?>
    Geändert von phpBuddy (01.08.2007 um 16:43 Uhr)

  3. #3
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Datenbank-Funktionen

    Noch keine Beiträge vorhanden
    Geändert von phpBuddy (29.07.2007 um 00:06 Uhr)

  4. #4
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Dateisystem

    Noch keine Beiträge vorhanden
    Geändert von phpBuddy (29.07.2007 um 00:07 Uhr)

  5. #5
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Datum-Funktionen

    PHP-Code:
    /* **************************************************** */
    /* ***   MySQL Datum in deutsches Datum umwandeln   *** */
    /* **************************************************** */
    function DatumsWandler$Datum$separator NULL )
    {
        if (
    strlen$Datum ) == 10)
        {
            
    $GewandeltesDatum substr$Datum8);
            
    $GewandeltesDatum .= ".";
            
    $GewandeltesDatum .= substr$Datum5);
            
    $GewandeltesDatum .= ".";
            
    $GewandeltesDatum .= substr$Datum0);
            return 
    $GewandeltesDatum;
        }
        else if (
    strlen$Datum ) == 19)
        {
            
    $GewandeltesDatum substr$Datum8);
            
    $GewandeltesDatum .= ".";
            
    $GewandeltesDatum .= substr$Datum5);
            
    $GewandeltesDatum .= ".";
            
    $GewandeltesDatum .= substr$Datum0);
            if (
    gettype$separator ) == "string")
            {
                
    $GewandeltesDatum .= " " .$separator;
            }
            else if (
    gettype$separator ) == "integer")
            {
                for (
    $i 1$i <= $separator$i++)
                {
                    
    $GewandeltesDatum .= "&nbsp;";
                }
            }
            
    $GewandeltesDatum .= substr$Datum10 );
            return 
    $GewandeltesDatum;
        }
        else
        {
            return 
    FALSE;
        }

    Geändert von phpBuddy (29.07.2007 um 00:07 Uhr)

  6. #6
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Grafik-Funktionen

    JPG-Bild mit einem Wasserzeichen versehen, wobei die Position des WZ bestimmt werden kann
    PHP-Code:
    /* ******************************************* */
    /* ***   Bild mit Wasserzeichen versehen   *** */
    /* ******************************************* */
    function Wasserzeichen$originalbild$wzgrafik$ausrichtung )
    {
        
    $bild imagecreatefromjpeg$originalbild );
        
    // Bildtyp des Wasserzeichens ermitteln
        
    switch (substr$wzgrafik, -))
        {
            case 
    "jpg"$wasserzeichen imagecreatefromjpeg$wzgrafik ); break;
            case 
    "png"$wasserzeichen imagecreatefrompng$wzgrafik ); break;
            case 
    "gif"$wasserzeichen imagecreatefromgif$wzgrafik ); break;
        }
        
        
    // Bild Infos
        
    $bildbreite imagesx$bild );
        
    $bildhoehe imagesy$bild );
        
        
    // Wasserzeichen Infos
        
    $wasserzeichenbreite imagesx$wasserzeichen );
        
    $wasserzeichenhoehe imagesy$wasserzeichen );
        
        
    // Bilder erzeugen
        
    $neuesbild imagecreatetruecolor$bildbreite$bildhoehe );
        
        
    // Originalbild in neues Bild einfügen
        
    imagecopy$neuesbild$bild0000$bildbreite$bildhoehe );
        
        
    // Position des Wasserzeichen ermitteln und einfügen
        
    switch ($ausrichtung)
        {
            case( 
    "ol" ): $poben 0$punten 0; break;
            case( 
    "om" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten 0; break;
            case( 
    "or" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten 0; break;
            case( 
    "ml" ): $poben 0$punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
            case( 
    "mm" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
            case( 
    "mr" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
            case( 
    "ul" ): $poben 0$punten round($bildhoehe-$wasserzeichenhoehe); break;
            case( 
    "um" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten round$bildhoehe-$wasserzeichenhoehe ); break;
            case( 
    "ur" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten round$bildhoehe-$wasserzeichenhoehe ); break;
        }
        
        
    imagecopy$neuesbild$wasserzeichen$poben$punten00$wasserzeichenbreite$wasserzeichenhoehe );
        
        
    // Neues Bild mit Wasserzeichen speichern
        
    imagejpeg$neuesbild$originalbild90 );
        
    imagedestroy$neuesbild );
    }
    /*** Anwendungsbeispiel um im Bild Ferienhaus.jpg ein Wasserzeichen oben links zu plazieren ***/
    Wasserzeichen"Ferienhaus.jpg""firmenlogo.gif""ol" );

    // Es gibt 9 Ausrichtungen, wobei jeweils die ersten Buchstaben zur Orientierung dienen.
    // or = ecke oben rechts, mm = mitte mitte (zentrum des Bildes), ul = ecke unten links, usw. 
    Geändert von phpBuddy (29.07.2007 um 00:08 Uhr)

  7. #7
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Sonstiges

    SelectBox aus Array erstellen
    PHP-Code:
    /* ***************************************** */
    /* ***   SelectBox aus Array erstellen   *** */
    /* ***************************************** */
    function SelectBox$elementname$felder$vorausgewaehlt )
    {
        if (
    is_array$felder ))
        {
            
    $selectbox '<select name="' .$elementname'" id="' .$elementname"\">\n";
            foreach (
    $felder as $feldname => $feldinhalt)
            {
                
    $selectbox .= '<option value="' .$feldname'"';
                
    $selectbox .= ($feldname == $vorausgewaehlt || $feldinhalt == $vorausgewaehlt) ? ' selected="selected">' '>';
                
    $selectbox .= htmlentities$feldinhalt );
                
    $selectbox .= "</option>\n";
            }
            
    $selectbox .= '</select>';

            return 
    $selectbox;
        }
        else
        {
            return 
    false;
        }
    }
    /***** Anwendungsbeispiel *****/
    // Array mit SelectBox-Elementen
    $optionen = array(  "peter" => "Peter Müller",
                        
    "tanja" => "Tanja Schmidt",
                        
    "klaus" => "Klaus Fischer",
                        
    "max" => "Max Mustermann"
                     
    );
    // SelectBox mit echo() ausgeben. Die Parameter sind:
    // "personen" = Name- und ID-Attribut der Selectbox
    // $optionen = Das Array mit den Auswahlmoeglichkeiten
    // "klaus" = Schluessel oder Wert der Option die vor-selektiert sein soll
    echo SelectBox"personen"$optionen"klaus" ); 

    Mail mit Anhang (Achtung! Setzt zwingend PHP 5.2.x oder höher voraus!)
    PHP-Code:
    <?php
    $Empfaenger 
    "name@domain.tld";
    $Betreff    "Mail mit Anhang";
    $Nachricht  "Juhuu, ich kann Mails mit Anhang verschicken!\n\n";
    $Absender   "From: Max Mustermann <max@mustermann.tld>";

    // Dateiname fuer Anhang
    $Dateiname      "bild4711.jpg"// Dateiname auf dem Server
    $DateinameMail  "huebscher_sonnenuntergang.jpg"// Dateiname des Anhangs in der Mail.
    /* Man kann den selben Name wie auf dem Server verwenden oder einen neuen
    Name fuer den Anhang bestimmen. Das macht Sinn, wenn man z.B. Bilder mit
    Timestamp-Name auf dem Server abgelegt hat aber Bilder mit einem normalen
    Name verschicken moechte.*/

    // Anhang in Mailbody einfuegen
    $Nachricht .= "\r\n";
    $Nachricht .= "begin 666 {$DateinameMail}\r\n";
    $Nachricht .= convert_uuencodefile_get_contents$Dateiname ) );
    $Nachricht .= "end\r\n";

    // Mail verschicken
    mail($Empfaenger$Betreff$Nachricht$Absender);
    ?>
    Geändert von phpBuddy (28.09.2007 um 10:28 Uhr)

  8. #8
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    String-Funktionen

    Bereitet einen Datensatz auf um problemlos ausgegeben werden zu können. Es werden unnötige Leerzeichen und Leerzeilen entfernt, überlange Wörter werden umgebrochen damit sie ein Layout nicht zerstören, potentiell gefährliche Zeichen werden umgewandelt, Zeilenumbrüche werden HTML-konform umgewandelt.
    Das Beispiel hätte auch unter Datenbank-Funktionen stehen können, aber hier passt es besser, da Einträge z.B. auch aus einer Flatfile kommen könnten.
    PHP-Code:
    /* ******************************************************************* */
    /* ***   DB-Eintraege fuer Ausgabe aufbereiten (z.B. Gaestebuch)   *** */
    /* ******************************************************************* */
    function dbAusgabe$eintrag )
    {
        
    $pattern = array(   "/(\r\n)|(\r)/m",
                            
    "/(\n){4,}/m",
                            
    "/\s{3,}/m",
                            
    "/(.)\\1{15,}/im"
                        
    );

        
    $replace = array(   "\n",
                            
    "\n",
                            
    " ",
                            
    "\\1"
                        
    );

        
    $eintrag get_magic_quotes_runtime() ? stripslashes$eintrag ) : $eintrag;
        
    $eintrag htmlspecialchars$eintrag );
        
    $eintrag preg_replace$pattern$replace$eintrag ); // entfernt unnoetige Leerzeichen und Zeilenumbrueche
        
    $eintrag nl2br$eintrag );
        
    $eintrag wordwrap$eintrag45" ");
        return 
    $eintrag;

    Geändert von phpBuddy (29.07.2007 um 00:08 Uhr)

  9. #9
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    Validierung

    Prüft eine Email-Adresse (z.B. aus einem Formular) auf korrektes Format und mögliche Manipulationsversuche.
    PHP-Code:
    /* ********************************** */
    /* ***   Email Adressen pruefen   *** */
    /* ********************************** */
    function pruefeEmail$email )
    {
        
    $nonascii      "\x80-\xff";
        
    $nqtext        "[^\\\\$nonascii\015\012\"]";
        
    $qchar         "\\\\[^$nonascii]";
        
    $normuser      '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
        
    $quotedstring  "\"(?:$nqtext|$qchar)+\"";
        
    $user_part     "(?:$normuser|$quotedstring)";
        
    $dom_mainpart  '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
        
    $dom_subpart   '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
        
    $dom_tldpart   '[a-zA-Z]{2,5}';
        
    $domain_part   "$dom_subpart$dom_mainpart$dom_tldpart";
        
    $pattern       "$user_part\@$domain_part";

        if (!
    preg_match"/^$pattern$/"$email ))
        {
            return 
    FALSE;
        }
        else
        {
            return 
    TRUE;
        }

    Geändert von phpBuddy (29.07.2007 um 00:08 Uhr)


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Stichworte


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51