getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 08.02.2003, 13:22   #1
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE

1001 Nützliche Funktionen für PHP


Na gut, ganz so viele sind es nicht, aber diese hab ich mit der Zeit zusammengesammelt und nutze sie recht oft für alles Mögliche (Zeitberechnung, Stringmanipulation, etc.).

Verbesserungsvorschläge und Ideen sind gern willkommen ;)

Code:
// --------------- Zeitberechnungen ---------------


function startcount()
// Startcount / Endcount - misst die Zeit in ms, die waehrend der
// erstellung der Seite vergangen sind.
{
  $mtime = microtime();
  $mtime = explode(" ",$mtime);
  $mtime = $mtime[1] + $mtime[0];
  return $mtime;
}

function endcount($starttime)
{
  $mtime = microtime();
  $mtime = explode(" ",$mtime);
  $mtime = $mtime[1] + $mtime[0];
  $endtime = $mtime;
  $totaltime = ($endtime - $starttime);
  printf("%f", $totaltime);
}

function unix2date($unixzeit,$format,$clock)
// Wandelt einen UNIX-Timestamp in ein normales Datum um
// und schickt einen String zurueck ...
// 11.09.2002 18:03 Uhr
{

	if($format=="long") $months = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
	if($format=="short") $months = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
	if($format=="digit") $months = array("01.","02.","03.","04.","05.","06.","07.","08.","09.","10.","11.","12.");

	list($mday,$month,$year) = split("( )",date("d n Y",$unixzeit));
	$month -= 1;

	if($clock=="uhr")
	{
		$uhrzeit=date("H:i",$unixzeit);
		return $this_day="$mday. $months[$month] $year - $uhrzeit";
	}
	else
	{
		return $this_day="$mday. $months[$month] $year";
	}
}

function date_diff($date1, $date2) # Vergleicht zwei TIMESTAMP (20021121) Daten (Tage, Stunden, Minuten, Sekunden)
{
  $s = strtotime($date2)-strtotime($date1);
  $d = intval($s/86400);
  $s -= $d*86400;
  $h = intval($s/3600);
  $s -= $h*3600;
  $m = intval($s/60);
  $s -= $m*60;
  return array("d"=>$d,"h"=>$h,"m"=>$m,"s"=>$s);
}

function calc_days($start,$end) # Errechnet die Tage (unixdate) zwischen zwei Daten
{
  $result = (int)(($end-$start)/86400);
  return $result;
}

// --------------- Textstrings manipulieren, BB-Codes ---------------

function cleantext($string)
// 20.02.2003 - ' werden auch umgewandelt (ENT_QUOTES)
// 21.02.2003 - wenn magic_quotes_gpc aus ist, addslashes durchführen
{
 	$string=trim($string);
	if(get_magic_quotes_gpc() != 1) $string=addslashes($string); # Magic Quotes an/aus?
	$string=htmlentities($string,ENT_QUOTES); # ' auch umwandeln
  $string=preg_replace('/\r\n|\r|\n/', '<br />', $string); # \r und \n Umbrüche umwandeln
  return $string;
}

function re_htmlentities($html)
// Erstellt aus HTML-Entitles normale Zeichen her (fuer Emails)
// Neue, kurze Version
// 10.10.2002 16:50 Uhr
{
  $arr = get_html_translation_table(HTML_ENTITIES);
  $arr = array_flip($arr);
  return strtr($html, $arr);
}

function br2break($string)
// Erstellt aus <br /> und <br> wieder normale \r\n Umbrueche
{
	return preg_replace("=<br(>|([\s/][^>]*)>)\r?\n?=i", "\r\n", $string);
}

function bbcode2html($text)
// Erstellt aus den BBCodes die passenden <span>-Definitionen
{
  $text = preg_replace("#\[f\](.*?)\[/f\]#si", '<strong>\\1</strong>', $text);
  $text = preg_replace("#\[k\](.*?)\[/k\]#si", '<em>\\1</em>', $text);
  $text = preg_replace("#\[b\](.*?)\[/b\]#si", '<span class="blau">\\1</span>', $text);
  return $text;
}

// Macht aus https, ftps, mailtos und news anklickbare links
function replace_uri($str)
{
  $pattern = '#(^|[^\"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';
  return preg_replace($pattern,"\\1<a href=\"\\2\\3\">\\2\\3</a>\\4",$str);
}

// Ersetzt Umlaute mit oe, ue etc.
// Nützlich für hochgeladene Dateien
// 20.02.2003 22:56
function replace_umlaut($str)
{
	$str=str_replace("ß","ss",$str);
	$str=str_replace("ä","ae",$str);
	$str=str_replace("ü","ue",$str);
	$str=str_replace("ö","oe",$str);
	$str=str_replace("Ä","Ae",$str);
	$str=str_replace("Ü","Ue",$str);
	$str=str_replace("Ö","Oe",$str);
	$str=str_replace(",","",$str);
	$str=preg_replace("/\s/s","_",$str); # Alle Leerzeichen weg
	return $str;
}

// --------------- RegEx zum Überprüfen von Strings ---------------

// Ueberprueft, ob im String nur Zahlen stehen
function checknumber($string)
{
	if (!preg_match("/^\d+$/",$string))
	{ return false; }
	else { return true; }
}

// Ueberprueft, ob im String nur Buchstaben stehen
function checkletter($string)
{
	if (!preg_match("=^[a-zäöüß]+$=i",$string))
	{ return false; }
	else { return true; }
}

function check_email($email) // Checkt, ob Emails gültig sind
{
  $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed

  $nqtext        = "[^\\\\$nonascii\015\012\"]";
  $qchar         = "\\\\[^$nonascii]";

  $protocol      = '(?:mailto:)';

  $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";

  $regex         = "$protocol?$user_part\@$domain_part";
  // RegEx end

  return preg_match("/^$regex$/",$email);
}

function checkurl($url) # Überprüft, ob URLs äußerlich korrekt sind
{
	$regex="^(http://|https://)?[-a-z0-9]+(\.?[-a-z0-9]+){0,3}\.[a-z]{2,4}((/[[:graph:]]*){1,5}([[:graph:]]+\.[a-z0-9]{1,5})?)?$";
  return eregi($regex,$url);
}

// --------------- Passworterstellung / ID-Erstellung ---------------

function generatepw($length)
// Erstellt ein zufaelliges Passwort und schickt es zurueck
// Erwartet wird ein Wert (Laenge des Passwortes)
// Ohne l und 1 (sieht zu aehnlich aus)
// 15.08.2002 12:09 Uhr
{
	$pass = "";
	$index = 1;
	while ($index <= $length)
	{
		mt_srand((double)microtime()*1000000);
		$random = mt_rand(0,59);
		$pass .= substr("abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ023456789", $random, 1);
		$index++;
	}
	return $pass;
}

function makeunique($passlen)
// Schnellere, aber auch einfachere Version eines Passwortgenerators
// Die Zeichen sind willkuerlich, man hat keine Auswahl
// 26.03.2003 - Verbesserte Zufallsfunktion
{
	list($usec, $sec) = explode(' ', microtime());
	mt_srand((float) $sec + ((float) $usec * 100000));
	$rand_string = md5(uniqid(mt_rand(), true));

	$passwort = substr($rand_string,0,$passlen);
	return $passwort;
}

// --------------- Dateimanipulation ---------------


function delete_file($file)
// Datei 100% löschen
{
	$delete = @unlink($file);
	clearstatcache();
  	if (@file_exists($file))
  	{
    	$filesys = eregi_replace("/","\\",$file);
     	$delete = @system("del $filesys");
    	clearstatcache();
     	if (@file_exists($file))
     	{
        	$delete = @chmod ($file, 0775);
        	$delete = @unlink($file);
      		$delete = @system("del $filesys");
     	}
  	}
 	clearstatcache();
  	if (@file_exists($file))
	{
		return false;
	}
  	else
  	{
  		return true;
  	}
}

// --------------- Bilderstellung / Manipulation ---------------

// function createthumb ($bild,$newwidth=120,$ziel="./thumbs/")
function createthumb ($bild,$newwidth,$ziel)
{
	$bild2 = $quell.$bild;
  if(!file_exists($bild2)) return 0;

	$daten  = getimagesize ($bild2);
	$width  = $daten[0];
	$height = $daten[1];
	$typ    = $daten[2];
	$newheight = intval($height*$newwidth/$width);
	$thumb =     $ziel."tn_".$bild;

	switch ($typ)
	{
		case "1":
			echo "Das .GIF Format wird leider nicht unterst&uuml;tzt.";
			break;
		case "2":
			$old = ImageCreateFromJPEG($bild2);
			$new = imagecreatetruecolor($newwidth,$newheight);
			
			imagecopyresampled($new,$old,0,0,0,0,$newwidth,$newheight,$width,$height);
			ImageJPEG($new,$thumb);
			break;
		case "3":
			$old = ImageCreateFromPNG($bild2);
			$new = imagecreatetruecolor($newwidth,$newheight);

			imagecopyresampled($new,$old,0,0,0,0,$newwidth,$newheight,$width,$height);
			ImagePNG($new,$thumb);
			break;
		default:
		echo "Dateityp ist ung&uuml;ltig!";

	}

	return $thumb;
}
?>
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris

Geändert von Adagio (14.04.2003 um 01:17 Uhr).
Boris ist offline   Mit Zitat antworten


Alt 14.04.2003, 00:26   #2
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
Perlen, Adagio.
Danke
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 14.04.2003, 01:19   #3
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Habs grad noch mal aktualisiert
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 11.11.2003, 16:15   #4
TP-Senior
 
Benutzerbild von blueGirl
 
Registriert seit: Jan 2002
blueGirl macht alles soweit korrekt
das ist aber ne schöne sammlung, sehr hilfreich, danke!

blueGirl
__________________
blueGirl
blueGirl ist offline   Mit Zitat antworten
Alt 05.03.2004, 20:48   #5
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
hier auch mal ne funktion meinerseits

Code:
<?

function convert($slashes,$html,$nl2br,$bbcode,$var)
{

 if(!empty($slashes) && $slashes = 1)
 {
  $var = stripslashes($var);
 }

 if(!empty($html) && $html = 1)
 {
  $var = htmlspecialchars($var);
 }

 if(!empty($nl2br) && $nl2br = 1)
 {
  $var = nl2br($var);
 }

 if(!empty($bbcode) && $bbcode = 1)
 {
  $bbcode_array = array('[i ]', '[/i ]', '[b ]', '[/b ]', '[u ]', '[/u ]'); // freizeichen loeschen
  $replace_array = array('<em>', '</em>', '<strong>',
 '</strong>', '<span style="text-decoration:underline;">', '</span>');

  for($i = 0; $i < count($bbcode_array); $i++)
  {
   $var = str_replace($bbcode_array[$i], $replace_array[$i], $var);
  }
 }

 return $var;
}
?>
enthaelt stripslashes (slashes aus datenbankstring entfernen), htmlentities (< und > ersetzen, damit kein html ausgefuehrt werden kann), nl2br (um absaetze automatisch umzuwandeln) und bbcode (fett/kursiv/unterstrichen fuer textabschnitte - ersetzt einzeln um nicht nur den laengsten string wie mit preg zu ersetzen)


convert(int, int, int, int, $string);

int = 0 = wird nicht umgewandelt
int = 1 = wird umgewandelt

bei der reihenfolge
int1 = stripslashes, slashes (nicht) umwandeln
int2 = htmlspecialchars, < und > (nicht) umwandeln
int3 = nl2br, absaetze (nicht) umwandeln
int4 = bbcode, bbcode (nicht) umwandeln

$string is eben der string in dem ersetzt werden soll.

edit: die freizeichen im bbcode_array muessen geloescht werden, aber sonst schluckts das forum (warum kann man bbcode hier nicht deaktivieren?? menno).
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D

Geändert von HoRnominatoR (05.03.2004 um 20:54 Uhr).
HoRnominatoR ist offline   Mit Zitat antworten
Alt 08.03.2004, 11:36   #6
TP-Senior
 
Benutzerbild von blueGirl
 
Registriert seit: Jan 2002
blueGirl macht alles soweit korrekt
wow! das brauch ich grad! danke schön! blueGirl
__________________
blueGirl
blueGirl ist offline   Mit Zitat antworten
Alt 13.03.2004, 13:14   #7
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
@Horno:
Wozu sind denn bitte die Zuweisungen in den IF-Abfragen, die IMMER wahr sind? Warum eine Prüfung mit empty, wenn nur ein boolscher Wert benötigt wird? Deshalb verstehe ich die Sache mit dem int(eger) auch nicht... Ja/Nein sind Wahrheitswerte - was anderes wird da doch nicht gebraucht.
Und, warum werden der Funktion str_replace nicht direkt die Arrays übergeben? ... Diese kleine Funktion ist meiner Meinung nach doch "etwas überladen" mit unnötigem Kram, oder?

Gruss
Jan

Zitat:
ich fuer meinen teil habe nicht vor mich weiter von einem fehlerhaften programm, das von inkompetenten entwicklern, [...] zugemuellt wird und es auch nicht fertig bringen dafuer mal ein bugfix zur verfuegung zu stellen, wie es fuer ihre sicherheitsluecken immer tun, unterwerfen zu lassen.
...da fällt mir ein Glashaus und diverse Steine ein. Just my 2 cents...
Stuck Mojo ist offline   Mit Zitat antworten
Alt 07.07.2004, 21:30   #8
TP-Senior
 
Registriert seit: Jun 2004
Ort: leipzig
feuervogel macht alles soweit korrekt
und <strong> ist reichlich veraltet...
__________________
BeCreated - Geduld und Zeit für Ihre Wünsche
feuervogel ist offline   Mit Zitat antworten
Alt 07.07.2004, 22:56   #9
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
@stuck

wenn ich genau drueber nachdenke, liegst du wohl richtig, solange 0 != NULL.
sollte ich eventuell mal umschreiben. das mit 1/0 hab ich gemacht, um einfach festzulegen, ob entsprechende konvertierung wirklich vorgenommen oder uebersprungen werden soll, verbesserungsvorschlaege sind bei mir immer gern gesehen. str_replace koennte ich auch mal durch strtr() ersetzen, zwecks vereinfachung.

@feuervogel

falls du wirklich ahnung von dem hast was du da sprichst, welche alternative wuerdest du denn anbieten? (zumal ich die aussagen fuer mehr als falsch halte - es ist aktueller denn je)
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 07.07.2004, 23:34   #10
TP-Senior
 
Registriert seit: Jun 2004
Ort: leipzig
feuervogel macht alles soweit korrekt
meine alternative ist:

<b>

<strong> stammt noch aus html 1.0-zeiten und ist somit unzweifelhaft alt.
__________________
BeCreated - Geduld und Zeit für Ihre Wünsche
feuervogel ist offline   Mit Zitat antworten
Alt 08.07.2004, 00:05   #11
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von feuervogel
meine alternative ist:

<b>

<strong> stammt noch aus html 1.0-zeiten und ist somit unzweifelhaft alt.
Tja, da muss ich Dich leider enttäuschen. <b> ist nicht mehr Teil des aktuellen XHTML-Standards, sondern <strong>. Erst informieren, dann reden ;-)
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 08.07.2004, 00:52   #12
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
<b> und <strong> haben soviel gemein wie java und javascript.

<b> = bold = fett
<strong> = stark betont

fuer die logische auszeichnung eines stark betonten textes gibt es keine alternative zu <strong>. <b> ist ein rein optisches praesentationsmittel und hat in aktuellen dokumenten rein garnichts mehr verloren, da komplett durch CSS ersetzt, noch weniger als frueher, screenreader und braillezeilen werden mehr denn je benutzt, das web wird fuer behinderte immer offener, semantisches markup tritt in den vordergrund. strong ist garnicht mehr wegzudenken, war es auch nie.
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 08.07.2004, 00:56   #13
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
im grunde hat er mit seiner aussage schon recht - es ist unzweifelhaft alt, aber genau damit auch aktuell, da es schon immer grundlegend fuer ein semantisches markup war. es findet bloss keine ersetzung statt, wozu auch... strong bleibt strong, b bleibt b, das eine hat mit dem anderen nichts zu tun.
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 08.07.2004, 09:45   #14
TP-Senior
 
Registriert seit: Jun 2004
Ort: leipzig
feuervogel macht alles soweit korrekt
ah, okay, ich hab mich einfach nur noch nie mit der behindertengerechten darstellung einer webseite auseinander gesetzt...
__________________
BeCreated - Geduld und Zeit für Ihre Wünsche
feuervogel ist offline   Mit Zitat antworten
Alt 10.07.2004, 13:17   #15
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Danke Adagio, deine generatePW Funktion kommt mir gerade gelegen
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
1001 Nützliche Funktionen für PHP 1001 Nützliche Funktionen für PHP
« [JavaScript]-Linkrahmen verhindern | Parser-Klasse »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:57 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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