 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
28.07.2007, 01:49
|
#1
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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).
|
|
|
28.07.2007, 01:50
|
#2
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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 = strcmp( strtolower($b[$f[0]]), strtolower($a[$f[0]]) ); if ( $strc != 0 ){ return $strc; } break; case "a": $strc = strcmp( strtolower($a[$f[0]]), strtolower($b[$f[0]]) ); if ( $strc != 0 ){ 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( 1 => array( 'Nachname' => 'Muster', 'Name' => 'Otto', 'Alter' => 27, 'Skills' => array('PHP'=>8,'MySQL'=>6,'C++'=>2) ), 2 => array( 'Nachname' => 'Müller', 'Name' => 'Heinz', 'Alter' => 46, 'Skills' => array('PHP'=>2,'MySQL'=>9,'C++'=>9) ), 3 => 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($array, get_orderarray('Nachname,a|Name,a'))); echo "-------------------------------------<br>";
echo "Sortiert nach PHP-Skills absteigend, bei Gleichheit nach Alter aufsteigend:<br>"; print_r(arfsort($array, get_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($array, get_orderarray('MySQL,D|PHP,D|Alter,A'))); echo "-------------------------------------<br>";
echo "</pre>";
?>
Geändert von phpBuddy (01.08.2007 um 16:43 Uhr).
|
|
|
28.07.2007, 01:51
|
#3
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Datenbank-Funktionen
Noch keine Beiträge vorhanden
Geändert von phpBuddy (29.07.2007 um 00:06 Uhr).
|
|
|
28.07.2007, 01:51
|
#4
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Dateisystem
Noch keine Beiträge vorhanden
Geändert von phpBuddy (29.07.2007 um 00:07 Uhr).
|
|
|
28.07.2007, 01:52
|
#5
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Datum-Funktionen
PHP-Code:
/* **************************************************** */
/* *** MySQL Datum in deutsches Datum umwandeln *** */
/* **************************************************** */
function DatumsWandler( $Datum, $separator = NULL )
{
if (strlen( $Datum ) == 10)
{
$GewandeltesDatum = substr( $Datum, 8, 2 );
$GewandeltesDatum .= ".";
$GewandeltesDatum .= substr( $Datum, 5, 2 );
$GewandeltesDatum .= ".";
$GewandeltesDatum .= substr( $Datum, 0, 4 );
return $GewandeltesDatum;
}
else if (strlen( $Datum ) == 19)
{
$GewandeltesDatum = substr( $Datum, 8, 2 );
$GewandeltesDatum .= ".";
$GewandeltesDatum .= substr( $Datum, 5, 2 );
$GewandeltesDatum .= ".";
$GewandeltesDatum .= substr( $Datum, 0, 4 );
if (gettype( $separator ) == "string")
{
$GewandeltesDatum .= " " .$separator;
}
else if (gettype( $separator ) == "integer")
{
for ($i = 1; $i <= $separator; $i++)
{
$GewandeltesDatum .= " ";
}
}
$GewandeltesDatum .= substr( $Datum, 10 );
return $GewandeltesDatum;
}
else
{
return FALSE;
}
}
Geändert von phpBuddy (29.07.2007 um 00:07 Uhr).
|
|
|
28.07.2007, 01:53
|
#6
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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, -3 ))
{
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, $bild, 0, 0, 0, 0, $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, $punten, 0, 0, $wasserzeichenbreite, $wasserzeichenhoehe );
// Neues Bild mit Wasserzeichen speichern
imagejpeg( $neuesbild, $originalbild, 90 );
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).
|
|
|
28.07.2007, 01:53
|
#7
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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_uuencode( file_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).
|
|
|
28.07.2007, 01:53
|
#8
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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( $eintrag, 45, " ", 1 );
return $eintrag;
}
Geändert von phpBuddy (29.07.2007 um 00:08 Uhr).
|
|
|
28.07.2007, 01:54
|
#9
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
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 in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
|
 |