Registrieren  •  Login 
  
 
im Forum


 FAQ   Mitgliederliste   Benutzergruppen   Teamseite   Suchen 

PHP Code Snippets
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fanrpg
Mitglied
Mitglied



Anmeldedatum: 14.12.2006
Geschlecht: Keine Angabe
Beiträge: 126
Wohnort: Windeck

BeitragVerfasst am: 15.07.2007, 00:39    Titel:

Es gibt ja bekanntlich Seiten die anstatt auf Datenbanken auf .txt Dateien (oder ähnliches) bauen. Nur wird es schwierig in den Files wie in einer Datenbank zu suchen. Aber dies ist auch lösbar, auch wenn ziemlich unperfomant.

PHP-Code:
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
<?php

function search_file($file$search_string '')
{
    
$file = ( file_exists($file) ) ? file_get_contents($file) : false;
    
    if( 
$file && !empty($search_string) )
    {
        if( 
preg_match("#"preg_quote($search_string"#") ."#is"$file) )
        {
            return 
true;
        }
        else
        {
            return 
false;
        }
    }
    else
    {
        return 
$file;
    }
}

function 
search_file($file$search_string$break_once false)
{
    
$file = ( file_exists($file) ) ? file($file) : false;
    
    
$i 1;
    
$ret "";
    while( list(
$key$value) = each($file) )
    {
        if( 
strpos($value$search_string) !== false )
        {
            
$ret .= "$i\n";
            if( 
$break_once === true )
            {
                return 
$ret;
            }
        }
    }
    return 
$ret;
}
?>


Die Obere function gibt einem ledeglich bekannt ob die Stelle in dem File gefunden wurde... wenn z.B ein Counter verwendet der auf IP's basiert.

Die untere gibt einem alle Fundstellen + Zeile aus, die in dem Dokument gefunden wurden. Dies ist vor allem interessant für Seiten die Benutzern bestimmte Aktionen mehrmals erlauben wollen aber nicht unendlich. Wenn $break_once auf true gesetzt wird gibt er nur die erste fundstelle die zeile aus.
Nach oben
Benutzer-Profile anzeigen fanrpg ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 15.07.2007, 09:39    Titel:

Ich hätte da noch einen kleinen Verbesserungsvorschlag für das vorherige Codeschnippsel: Anstatt eines regulären Ausdrucks sollte man die String Funktionen benutzen, die sollten in diesem Beispiel doppelt so schnell sein Wink
Code:
if( preg_match("#". preg_quote($search_string, "#") ."#is", $file) )

Besser:
Code:
if( strstr($file, $search_string) )



MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fanrpg
Mitglied
Mitglied



Anmeldedatum: 14.12.2006
Geschlecht: Keine Angabe
Beiträge: 126
Wohnort: Windeck

BeitragVerfasst am: 15.07.2007, 13:43    Titel:

Mit stristr, strpos und Co. hatte ich so meine Probleme wenn das Suchergebniss über mehrere Zeilen ging... deswegen den regulären Ausdruck.
Nach oben
Benutzer-Profile anzeigen fanrpg ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
fanrpg
Mitglied
Mitglied



Anmeldedatum: 14.12.2006
Geschlecht: Keine Angabe
Beiträge: 126
Wohnort: Windeck

BeitragVerfasst am: 23.07.2007, 02:52    Titel:

Und noch ein schönes script zum einfachen optimieren aller datenbanken + tabellen eines benutzers Smile
Er erfasst automatisch alle Datenbanken.. liest dort alle Tabellen aus.. und optimiert sie dann.. evt. auch für ein Cronjob geeignet.
Die DB Zugangsdaten müssen natürlich angepasst werden.


PHP-Code:
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
<?php

$dbhost 
'localhost';
$dbuser 'root';
$dbpass '';

if( !( 
$db_connect mysql_connect($dbhost$dbuser$dbpass) ))
{
    die(
"Error could not connect to database" mysql_error());
}
else
{
    unset(
$dbhost$dbuser$dbpass);
    
    
# get databases of user...
    
    
$result mysql_list_dbs($db_connect);
    
$database = array();
    
    while( 
$row mysql_fetch_array($result) )
    {
        
$database[] = $row['Database'];
    }
    
    foreach(
$database as $db
    {
        
$result mysql_list_tables($db$db_connect);
        
        while( 
$row mysql_fetch_array($result) )
        {
            
$tables[][$db] = $row[0];
        }
    }
    
    foreach(
$database as $db)
    {
        foreach(
$tables as $key => $array )
        {
            foreach( 
$array as $dbname => $table )
            {
                if( 
$db == $dbname && $dbname != 'information_schema')
                {
                    
mysql_select_db($dbname);
                    
mysql_query("OPTIMIZE TABLE $table") or die(mysql_error());
                }
            }
        }
    }
    
}

echo 
"<pre>" .print_r($databasetrue) ."</pre><br />";
echo 
"<pre>" .print_r($tablestrue) ."</pre>";
?>
Nach oben
Benutzer-Profile anzeigen fanrpg ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
fanrpg
Mitglied
Mitglied



Anmeldedatum: 14.12.2006
Geschlecht: Keine Angabe
Beiträge: 126
Wohnort: Windeck

BeitragVerfasst am: 23.07.2007, 23:49    Titel:

Hier noch eine "kleinere email class" mit ein paar Funktionen.. Smile

PHP-Code:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
<?php
#################################################
##
##
##        BBCode Supporting E-Mail Class
##        with massmail function
##
##        Author: SynN and fanrpg (c) 2007
##        Date: 07/23/07
##
##        Version: 1.0.0
##        
##        Licensed under GNU Public License
##        http://opensource.org/licenses/gpl-license.php
##
##
#################################################

#################################################
##
##        Example:
##        
##        $mail = new Email();
##
##        $mail->set("from", "absender@example.com");
##        $mail->set("to", "empfaenger@example.com"); // You can use mto to send massmail ( $mail->set("mto", array("mail@example.com", "mail2@example.com")) )
##        $mail->set("subject", "Betreff"); // Subject for mail
##        $mail->set("html", 1) // html email 1 = on, 0 = off
##        $mail->set("mailbb", 1) // bbcode for mails 1 = on, 0 = off
##        $mail->set("message", "Message of the Mail");
##        $mail->send();
##        $mail->clean();
##
##        Optional commands:
##
##        $mail->set("header", "own header"); // to set own header..
##        $mail->set("bcc", "bcc@example.com"); // to send a blindcopy
##        $mail->set("cc", "cc@example.com"); // to send a copy
##
##        You can use mbcc, mcc to send mass bcc or cc, like to use mto.
##        You can also combine to and mto, cc and mcc, bcc and mbcc and all of them with arrays or just strings.
##
#################################################

class Email
{
    var 
$from;
    var 
$to;
    var 
$subject;
    var 
$headers;
    var 
$bcc;
    var 
$cc;
    var 
$message;
    var 
$mailbb;
    var 
$html false;
    var 
$send false;
    
    
    function 
set($type$value)
    {
        switch( 
$type )
        {
            case 
'html':
                if( 
$value == or $value === true )
                {
                    
$this->html true;
                    
$this->set("header""Content-Type: text/html");
                    
$this->set("header""Content-Transfer-Encoding: 8bit");
                }
                break;
            case 
'from':
                if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$value) )
                {
                    
$this->from $value;
                }
                else
                {
                    return 
false;
                }
                break;
            case 
'to':
                if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$value) )
                {
                    
$this->to $value;
                }
                else
                {
                    return 
false;
                }
                break;
            case 
'subject':
                if( !empty(
$value) )
                {
                    
$value stripslashes($value);
                    
$value htmlspecialchars($value);
                    
                    
$this->subject $value;
                }
                else
                {
                    return 
false;
                }
                break;
            case 
'bcc':
                if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$value) )
                {
                    
$this->bcc $value;
                }
                break;
            case 
'cc':
                if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$value) )
                {
                    
$this->cc $value;
                }
                break;
            case 
'message':
                
$message stripslashes($value);
                if( 
$this->html !== true )
                {
                    
$message strip_tags($message);
                }
                
                
$this->message $message;
                
                break;    
            case 
'mto':
                if ( 
is_array($value) )
                {
                    
$this->multiple_to($value);
                }
                else
                {
                    if ( !isset(
$this->to) )
                    {
                        
$this->to $value;
                    }
                    else
                    {
                        
$this->to .= ", " $value;
                    }
                }
                break;
            case 
'mcc':
                if ( 
is_array($value) )
                {
                    
$this->multiple_cc($value);
                }
                else
                {
                    if ( !isset(
$this->cc) )
                    {
                        
$this->cc $value;
                    }
                    else
                    {
                        
$this->cc .= ", " $value;
                    }
                }
                break;
            case 
'mbcc':
                if ( 
is_array($value) )
                {
                    
$this->multiple_bcc($value);
                }
                else
                {
                    if ( !isset(
$this->bcc) )
                    {
                        
$this->bcc $value;
                    }
                    else
                    {
                        
$this->bcc .= ", " $value;
                    }
                }
                break;
            case 
'header':
                
$this->set_header($value);
                break;
            case 
'mailbb':
                if( 
$value == or $value === true )
                {
                    
$this->mailbb true;
                }
                break;
            default:
                return 
false;
        }
    }
    
    function 
multiple_to$to )
    {
        if( !
is_array($to) )
        {
            return 
false;
        }
        else
        {
            if( 
$this->send !== true )
            {
                foreach ( 
$to as $mail )
                {
                    if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$mail) )
                    {
                        if ( empty(
$this->to) )
                        {
                            
$this->to $mail;
                        }
                        else
                        {
                            
$this->to .= ", " $mail;
                        }

                    }
                }
            }
        }    
    }
    
    function 
multiple_cc$cc )
    {
        if( !
is_array($cc) )
        {
            return 
false;
        }
        else
        {
            if( 
$this->send !== true )
            {
                foreach ( 
$cc as $mail )
                {
                    if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$mail) )
                    {
                        if ( empty(
$this->cc) )
                        {
                            
$this->cc $mail;
                        }
                        else
                        {
                            
$this->cc .= ", " $mail;
                        }
                    }
                }
            }
        }    
    }
    
    function 
multiple_bcc$bcc )
    {
        if( !
is_array($bcc) )
        {
            return 
false;
        }
        else
        {
            if( 
$this->send !== true )
            {
                foreach ( 
$bcc as $mail )
                {
                    if( 
preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i"$mail) )
                    {
                        if ( empty(
$this->bcc) )
                        {
                            
$this->bcc $mail;
                        }
                        else
                        {
                            
$this->bcc .= ", " $mail;
                        }
                    }
                }
            }
        }    
    }
    
    function 
set_header$header )
    {
        
$headers $this->headers;
        
        
$headers preg_replace("#\r\n\r\n$#""\r\n"$headers);
        
        
$headers .= $header "\r\n";
        
        
$this->headers $headers;
    }
    
    function 
mailbb$message )
    {
        
$search = array(
            
'\[b\](.*?)\[/b\]' => '<strong>\1</strong>',
            
'\[i\](.*?)\[/i\]' => '<i>\1</i>',
            
'\[u\](.*?)\[/u\]' => '<u>\1</u>',        
            
'\[center\](.*?)\[/center\]' => '<div style="width:100%; text-align:center;">\1</div>',
            
'\[url=(.*?)\](.*?)\[/url\]' => '<a href="\1">\2</a>',
            
'\[url\](.*?)\[/url\]' => '<a href="\1">\1</a>',
            
'\[color=(.*?)\](.*?)\[/color\]' => '<span style="color:\1;">\2</span>',
            
'\[img=(.*?)\](.*?)\[/img\]' => '<img src="\1" alt="\2" border="0" />',
            
'\[img\](.*?)\[/img\]' => '<img src="\1" alt="Image" border="0" />'
        
);
    
        foreach(
$search as $s => $r)
        {
            
$message preg_replace("#" $s "#is"$r$message);
        }
        
        
$message '<html>
        <head>
        <title>'
$this->subject .'</title>
        </head>
        <body>' 
str_replace("\n""\n<br />\n"$message) .'</body>
        </html>'
;
        
        return 
$message;
    }
    
    function 
send()
    {
        if( 
is_array($this->to) )
        {
            foreach(
$this->to as $mail)
            {
                
$to .= $mail .", ";
            }
            
$this->to $to;
        }
        
        
$this->set("header""From: " $this->from);
        
$this->set("header""To: " $this->to);
        
        if ( !empty(
$this->cc) && isset($this->cc) )
        {
            
$this->set("header""CC: " $this->cc);
        }
        
        if ( !empty(
$this->bcc) && isset($this->bcc) )
        {
            
$this->set("header""BCC: " $this->bcc);
        }
        
        
$this->set("header""X-Powered-By: fanrpg, SynN");
        
$this->set("header""X-Mailer: PHP/"phpversion());
        
$this->set("header""Return-Path: "$this->from);
        
        if( 
$this->mailbb === true && $this->html !== true )
        {
            
$this->message strip_tags($this->message);
            
$this->set("header""Content-Type: text/html");
            
$this->set("header""Content-Transfer-Encoding: 8bit");                    
        }
        
        if( 
$this->mailbb === true )
        {
            
$this->message $this->mailbb($this->message);
        }
        
        if( !
mail($this->to$this->subject$this->message$this->headers "\r\n") )
        {
            return 
false;
        }
        else
        {
            
$this->send true;
        }
    }
    
    function 
clean()
    {
        
$this->to "";
        
$this->from "";
        
$this->subject "";
        
$this->headers "";
        
$this->message "";
        
$this->bcc "";
        
$this->cc "";
        
$this->send false;
        
$this->html false;
    }
}
?>


Dieser Beitrag wurde insgesamt 4 mal geändert. Zuletzt von fanrpg.
Nach oben
Benutzer-Profile anzeigen fanrpg ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 24.08.2007, 10:12    Titel:

Eine Funktion auf alle Array Elemente anwenden

Wie oft muss man trim() oder htmlspecialchars() auf alle Elemente in $_POST oder $_GET anwenden? Mit dieser Funktion kann man jede x-belibiege Funktion (inklusive Parametern!) auf ein ganzes Array anwenden.

Zuerst einmal die PHP-Funktion:
PHP-Code:
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
<?php

function mass_change_of_array(&$array$function ''$params '')
{
    if(empty(
$function) || !preg_match('/[a-z0-9_]+/si'$function))
    {
        
$function 'trim';
    }
    
    if(!empty(
$params) && !preg_match('/^,/'$params))
    {
        return 
false;
    }
    else
    {
        
$params '';
    }
    
    if(!
is_array($array) || !count($array))
    {
        return 
false;
    }
    
    foreach(
$array as $key => $value)
    {
        eval(
'$array[$key] = '.$function.'($value'.$params.');');
    }
    
    return 
true;
}

?>


Anwendungsbeispiele:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
<?php

// Normale Funktionen
mass_change_of_array($_POST'trim');
mass_change_of_array($_GET'htmlentities');

// Funktionen mit Parametern
$params ", ".ENT_NOQUOTES.", 'UTF-8'";
mass_change_of_array($_COOKIE'htmlspecialchars'$params);

?>

Viel Spaß damit, mir hat diese Funktion schon viel Zeit erspart Very Happy

Update: Das ganze gibt es auch für mehrere Variablen: Eine Funktion auf mehrere Variablen anwenden Wink


MfG Christian
_________________


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 24.08.2007, 10:31    Titel:

Und gleich noch etwas praktisches, was ich in meiner functions.php gefunden habe Very Happy

Umlaute umwandeln

PHP-Code:
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
<?php

// Umlaute umwandeln (Zeichen bleiben erhalten)
function uml($var)
{
    return 
convert_uml($var'german');
}

// Umlaute Umwandeln (Internationale Version)
function uml_en($var)
{
    return 
convert_uml($var'english');
}

// Umlaute umwandeln (neue Methode)
function convert_uml($var$mode 'german')
{
    
$ori[] = 'ä';
    
$ori[] = 'Ä';
    
$ori[] = 'ü';
    
$ori[] = 'Ü';
    
$ori[] = 'ö';
    
$ori[] = 'Ö';
    
    if(
$mode == 'german')
    {
        
$new[] = '&auml;';
        
$new[] = '&Auml;';
        
$new[] = '&uuml;';
        
$new[] = '&Uuml;';
        
$new[] = '&ouml;';
        
$new[] = '&Ouml;';
    }
    else
    {
        
$new[] = 'ae';
        
$new[] = 'AE';
        
$new[] = 'ue';
        
$new[] = 'UE';
        
$new[] = 'oe';
        
$new[] = 'OE';
    }

    
$var str_replace($ori$new$var);
    
    return 
$var;
}

?>


Anwendungsbeispiele:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

// Der Text
$string 'Däs ist ein sehr dümmer Test!';

// Umwandlung wie htmlentities()
echo uml($string); // Ausgabe: D&auml;s ist ein sehr d&uuml;mmer Test!

// Umwandlung in normale Zeichen
echo uml_en($string); // Ausgabe: Daes ist ein sehr duemmer Test!

?>

Braucht man zwar sehr selten, kann aber trotzdem recht praktisch sein Wink


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 24.08.2007, 10:44    Titel:

Und die Suche nach Code Schnippsel in meiner functions.php geht weiter:

Führende Null an den Anfang stellen / Anzahl der Stellen angleichen
Ich weiß nicht, ob es dafür bereits eine fertige PHP-Funktion gibt, deshalb habe ich vor einiger Zeit diese Funktion geschrieben. Angenommen man hat die Zahl 7 und will sie so ausgeben: 07, weil alle Zahlen die selben Stellen haben sollen. Dieses Problem kann man mit meiner Funktion lösen. Praktisch für die Ausgabe von Zeitwerten Very Happy

Update: Doch, es gibt eine fertige Funktion dafür, und dieses heißt ganz simpel sprintf() Rolling Eyes

PHP-Code:
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
<?php

// Führende Null voransetzen
// $num = 1 für 10, 2 für 100, ... (Anzahl der Nullen)
function add_first_null($var$num 1)
{
    
/*
    $new_string = str_repeat('0', $num);
    $string = '1'.$new_string;
    
    if($var < $string)
    {
        $var = $new_string.$var;
    }
    */
    
    
return format_int($var, ($num 1));
}


// Anzahl der Stellen einer Zahl für die Ausgabe angleichen
// $var = die Zahl
// $count = Anzahl der Stellen, nicht der Nullen!
function format_int($var$count 1)
{
    
/*
    $var = intval($var);
    $count--;
    
    $i = 0;
    while($i <= $count)
    {
        $i++;
        
        $temp = '1'.str_repeat('0', $i);
        if($var < $temp)
        {
            $var = str_repeat('0', ($count - $i + 1)).$var;
            break;
        }
    }
    
    return (string) $var;
    */

    
return sprintf('%0'.$count.'s'$var);
}

?>

$var ist die Zahl.
$num die Anzahl der Nullen

Anwendungsbeispiel:
PHP-Code:
1
2
3
4
5
<?php

echo 'Es ist '.add_first_null(71).':'.add_first_null(301).':'.add_first_null(11).' Uhr';

?>

Das würde folgende Ausgabe erzeugen:
Code:
Es ist 07:30:01 Uhr


Anwendungsbeispiel mit der aktuellen Zeit:
PHP-Code:
1
2
3
4
5
<?php

echo 'Es ist '.add_first_null(date('H'), 1).':'.add_first_null(date('i'), 1).':'.add_first_null(date('s'), 1).' Uhr';

?>

Sieht vielleicht etwas unnötig aus, aber für die Anzeige von Downloadzeiten einer Datei o.ä. sieht die Ausgabe super aus Wink

Update: Die Funktion wurde erneuert, aus Kompatibilitätsgründen gibt es die alte weiterhin. Aber Achtung: Der zweite Parameter hat sich bei der neuen Funktion verändert! Die neue Funktion funktioniert nun auch fehlerfrei, bei der alten gab es öfters Probleme. Nun kann man die Anzahl der Stellen wirklich angleichen, sozusagen mit Nullen am Anfang angleichen Wink


MfG Christian
_________________


Dieser Beitrag wurde insgesamt 3 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 21.09.2007, 08:51    Titel:

Update: Thumbnails von Bildern erzeugen

imagecopyresized() wurde durch die bessere Funktion imagecopyresampled() ersetzt.
Danke an NoMoKeTo für diesen Hinweis Wink


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 10.10.2007, 20:06    Titel:

Eine Funktion auf mehrere Variablen anwenden
Kleine Erweiterung für das Codeschnippsel Eine Funktion auf alle Array Elemente anwenden

PHP-Code:
1
2
3
4
5
6
7
8
9
10
<?php

// Das sind die Variablen die verändert werden sollen 
$data = array('name''title''time''test'); 
foreach(
$data as $key

    $
$key htmlspecialchars($$key); 
}

?>

Dieser Code wendet htmlspecialchars() auf die Variablen $name, $title, $time und $test an Wink

Für die Faulen gibts auch noch eine Funktion, aber Achtung: Die Variablen werden global verfügbar durch den Aufruf! Falls du es also innerhalb einer anderen Funktion verwendest und die Variablen die du durch die Funktion schickst auf keinen Fall global verfügbar sein dürfen, verwende lieber den oberen Code Wink
PHP-Code:
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
<?php

function mass_change_of_vars($array$function ''$params '')
{
    if(empty(
$function) || !preg_match('/[a-z0-9_]+/si'$function))
    {
        
$function 'trim';
    }

    if(!empty(
$params) && !preg_match('/^,/'$params))
    {
        return 
false;
    }
    else
    {
        
$params '';
    }

    if(!
is_array($array) || !count($array))
    {
        return 
false;
    }

    foreach(
$array as $var)
    {
        global $
$var;
        eval(
'$'.$var.' = '.$function.'($'.$var.$params.');');
    }

    return 
true
}

?>


Und noch ein Anwendungsbeispiel:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

// Welche Variablen verändert werden sollen, einfach als Array Elemente eintragen, aber ohne $ am Anfang
$array = array('name''title''time''test');

// Normale Funktionen 
mass_change_of_vars($array'trim'); 
mass_change_of_vars($array'htmlentities'); 

// Funktionen mit Parametern 
$params ", ".ENT_NOQUOTES.", 'UTF-8'"
mass_change_of_vars($array'htmlspecialchars'$params);

?>

Bei Fragen lies dir bitte zuerst einmal den Text zu diesem Codeschnippsel durch, das sollte alles erklären: Eine Funktion auf alle Array Elemente anwenden


MfG Christian
_________________


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 10.10.2007, 20:16    Titel:

Update: Das Codeschnippsel Führende Null an den Anfang stellen wurde aktualisiert Wink

Der Titel wurde auf Führende Null an den Anfang stellen / Anzahl der Stellen angleichen geändert und die Funktion wurde angepasst. Nun funktioniert die Funktion fehlerfrei und bietet mehr Funktionsumfang.


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 10.10.2007, 20:33    Titel:

Exclamation Exclamation Exclamation Exclamation Exclamation Sicherheitshinweis für die Codeschnippsel Eine Funktion auf alle Array Elemente anwenden und Eine Funktion auf mehrere Variablen anwenden Exclamation Exclamation Exclamation Exclamation Exclamation

Falls du in $param nicht nur normale Werte übergibts, sondern z.B. Daten aus einer Datenbank oder aus Formularen, könnte jeder einen x-beliebigen Code ausführen.

Beispiel für ein geschütztes $param:
PHP-Code:
1
2
3
4
5
6
<?php

$params 
', " ' addslahes($wert) . ' " , 0, 1, ....."';
mass_change_of_vars($arraymeine_function', $params);

?>

Somit kann $wert nicht "ausbrechen", egal was für Code darin steht.

Damit man diese speziellen Fälle leichter handhaben kann, gibts in einigen Tagen nochmals eine verbesserte Version dieser beiden Funktionen. Bis dahin heißt es halt addslashes() zu benutzen. Danke übrigens an lupus, der mich darauf aufmerksam machte Wink


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lupus
Mitglied
Mitglied



Anmeldedatum: 30.09.2007
Geschlecht: Männlich
Beiträge: 85
Wohnort: Karlsruhe

BeitragVerfasst am: 12.10.2007, 21:55    Titel:

gesicherte Version (c) by Blackflash

lupus

Dieser Beitrag wurde insgesamt 2 mal geändert. Zuletzt von lupus.
Nach oben
Benutzer-Profile anzeigen lupus ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 27.11.2007, 19:08    Titel: usort() einfacher!

usort() einfacher!

Wie oft muss man usort() verwenden um ein mehrdimensionales Array zu sortieren. Das andauernde Aufsetzen der dazu benötigten Callback Funktionen gehört nun der Vergangenheit an, dank folgenden zwei Funktionen:
PHP-Code:
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
<?php

function usort_new(&$array$by$case_sensitive false$order false$nat false)
{
    
usort($arraycreate_function('$a, $b''return usort_by($a, $b, "'.addslashes($by).'", '.intval_new($case_sensitive).', '.intval_new($order).', '.intval_new($nat).');'));
}


function 
usort_by($a$b$by$case_sensitive$order$nat)
{
    
// Groß- / Kleinschreibung beachten?
    
if(!$case_sensitive)
    {
        
$a[$by] = strtolower($a[$by]);
        
$b[$by] = strtolower($b[$by]);
    }
    
    
// Natürliche Sortierung?
    
if($nat)
    {
        return 
strnatcmp($a[$by], $b[$by]);
    }
    else
    {
        if (
$a[$by] == $b[$by])
        {
            return 
0;
        }
        else
        {
            if(!
$order)
            {
                return (
$a[$by] < $b[$by]) ? -1;
            }
            else
            {
                return (
$a[$by] > $b[$by]) ? -1;
            }
        }
    }
}

?>

Der erste Parameter enthält das Array,
der zweite Parameter enthält den Key, nach dem sortiert werden soll,
der dritte Parameter ein true oder false, ob die Groß- / Kleinschreibung beachtet werden soll
und der letzte Parameter ein false für die aufsteigende und ein true für die absteigende Sortierung.

Man muss also nur usort_new() aufrufen, die zweite Funktion ist nur die universelle interne Hilfsfunktion Wink

Hier einige Beispiel für die Benutzung der Funktion:
PHP-Code:
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
<?php

// Das Array, dass sortiert werden soll
$array = array(
    array(
        
'size' => 5,
        
'title' => '1. TEST'
    
),
    array(
        
'size' => 6,
        
'title' => '1. test'
    
),
    
    array(
        
'size' => 43,
        
'title' => '2. Test'
    
),
);

// Nach "size" sortieren - aufsteigend
usort_new($array'size'falsefalse);

// Nach "size" sortieren - absteigend
usort_new($array'size'falsetrue);

// Nach "title" sortieren (Groß- / Kleinschreibung beachten)
usort_new($array'title'true);

// Und der schnelle Aufruf (Groß- / Kleinschreibung nicht beachten + aufsteigend sortieren)
usort_new($array'title');

?>


Für die Funktion uasort() gibt es eine ähnliche Funktion. Man kann die Funktion genauso wie usort_new verwenden, alle Parameter sind gleich.
PHP-Code:
1
2
3
4
5
6
7
8
9
10
<?php

// Sortierung
// Sortierung
function uasort_new(&$array$by$case_sensitive false$order false$nat false)
{
    
uasort($arraycreate_function('$a, $b''return usort_by($a, $b, "'.addslashes($by).'", '.intval_new($case_sensitive).', '.intval_new($order).', '.intval_new($nat).');'));
}

?>


Update vom 07.06.2010: Auch eine natürliche Sortierung wurde implementiert. Siehe Parameter $nat Wink


MfG Christian
_________________


Dieser Beitrag wurde insgesamt 4 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 14018
Wohnort: Wien

BeitragVerfasst am: 07.12.2007, 12:08    Titel:

Zeitwerte umrechnen

Gerade zu Zeiten der Skichallenge bemerkt man, dass man Zeitwerte im Format mm:ss,xxx gerne als Kommazahl haben würde, da man damit a) besser rechnen kann und b) es auch besser speichern kann. Hier nun die Lösung: Zwei Funktionen die genau das können!

Hinweis: Für diesen Codeschnippsel braucht man auch den Codeschnippsel Führende Null an den Anfang stellen, ansonsten wird der Codeschnippsel nicht funktionieren!

PHP-Code:
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
<?php

// Zeitwert in eine Kommazahl umwandeln
function skichallenge_time_to_float($time)
{    
    
$pattern '/^([0-9]+):([0-9]+),([0-9]+)$/';
    if(
preg_match($pattern$time$matches))
    {        
        if(
$matches[2] < 60 && $matches[3] < 1000)
        {
            
$time = ((intval($matches[1]) * 60) + intval($matches[2]) + floatval('0.'.$matches['3']));
        }
        else
        {
            
$time false;
        }
    }
    else
    {
        
$time false;
    }
    
    return 
$time;
}

// Kommazahl in einen Zeitwert umwandeln
function skichallenge_float_to_time($time)
{    
    
$time_new[3] = number_format(($time intval($time)), 3'.''');
    
$time_new[1] = intval($time 60);
    
$time_new[2] = intval(($time - ($time_new[1] * 60)));
    
    
$time add_first_null($time_new[1], 1).':'.add_first_null($time_new[2], 1).','.add_first_null(substr($time_new[3], 23), 2);
    return 
$time;
}

?>


Hier ein kleines Beispiel:
PHP-Code:
1
2
3
4
5
6
7
<?php

echo skichallenge_time_to_float('01:58,491');
echo 
"<br />\n";
echo 
skichallenge_float_to_time(118.491);

?>


Ausgabe:
Code:
118.491
01:58,491



MfG Christian
_________________


Dieser Beitrag wurde insgesamt 2 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
Seite 2 von 4

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.
Du kannst Dateien in diesem Forum nicht hochladen.
Du kannst Dateien in diesem Forum nicht herunterladen.

 

Alle Zeiten sind GMT + 2 Stunden (Sommerzeit)
Aktuelles Datum und Uhrzeit: 14.07.2020, 05:35
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!
Software based on work from the phpBB-Group  •  Deutsche Übersetzung von phpBB.de

netcup - Internetdienstleistungen
 
 
[ happytec.at | forum.happytec.at | blog.happytec.at | esports.happytec.at | event.happytec.at ]