CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
16.05.2003, 19:37:47
|
Anfänger
|
|
Registriert seit: Nov 2002
Beiträge: 63
|
|
Prüfen, zahl bzw. buchstabe in EINER VARIABLEN
Hallo, wie kann ich prüfen, ob bei einer Variablen (Im format A1, oder D11, oder so) der 1. Buchstabe zwischen A-F und die Zahl zwischen 1 und 11 ist? In der Variablen ist KEIN Leerzeichen vorhanden. Geht das ? danke vielmals
willy
__________________
MFG: Willy
-----------------------------------------
Zuerst der Spass und dann das Vergnügen
|
16.05.2003, 21:10:13
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Klaro geht das.
Kleine Ideensammlung:
Prüfen, ob Variable eine Zahl ist (is_numeric).
- wenn ja, dann kein Buchstabe vorhanden -> Fehleingabe
- wenn nicht, dann $buchstabe=$variable[0]; (erstes Zeichen zu $buchstabe) unset($variable[0]); (erstes Zeichen entfernen) und $zahl=$variable; (Rest als Zahl betrachten)
Kannst auch mit substr() arbeiten.
Alles klarofix?
|
16.05.2003, 21:19:13
|
Junior Member
|
|
Registriert seit: May 2002
Beiträge: 179
|
|
Ich hab jetzt ehr an ne regular expression gedacht..
PHP-Code:
$var = "D11";
$search = ereg("^[A-F][0-9][0|1]?$",$var);
if($search){
echo "Gefunden!";
}else{
echo "Nicht gefunden!";
}
Es wird nach in $var gesucht, ob es mit einem Großbuchstamen von A-F beginnt, mit einer Zahl von 0-9 "weitergeht" und ob an der dritten Stelle vielleicht noch eine 0 oder eine 1 vorkommt.
Also dann..
|
16.05.2003, 21:21:22
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Wenn möglich, dann vermeidet man reguläre Ausdrücke. Solche Ausdrücke sind zwar fast alles, aber nicht schnell!
|
16.05.2003, 21:24:37
|
Junior Member
|
|
Registriert seit: May 2002
Beiträge: 179
|
|
ja, das weiß ich, aber so ein kleines suchmuster wird die performance doch nicht sooo arg runterziehen oder ?
|
16.05.2003, 21:26:46
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Weiß nicht. Wäre mal ein Benchmark wert: Eine Suchabfrage mit simplen Stringfunktionen und ein regulärer Ausdruck.
Ma schaun. Wenn mir mal wieder langweilig sein sollte. Heute nicht mehr...
Wie auch immer: Ich bleibe dabei - reg. Expr. nur, wenn wirklich nötig.
|
16.05.2003, 21:41:21
|
Junior Member
|
|
Registriert seit: May 2002
Beiträge: 179
|
|
Jo.. natürlich bin ich auch nicht der Hardcore Regex User ;)
Aber hier kam mir spontan Regex ins Gedächtnis..
Ich hab nen "Benchmark" gemacht und mit Regex brauchts
ca. 0.0002 sek. (der Wert ändert sich gar nicht, egal was ich eingebe ;)).
PHP-Code:
<?php
function getmicrotime(){
list($usec,$sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
//
$search = ereg("^[A-F][0-9][0|1]?$",$var);
if($search){
echo "Gefunden!";
}else{
echo "Nichts gefunden!";
}
//
$time_end = getmicrotime();
$time_difference = $time_end - $time_start;
$time_rounded = round($time_difference,4);
echo "<br>";
echo $time_rounded;
?>
alles auf win xp auf nem athlon 1,2 ghz und 512 mb sd-ram
Poste deinen Vorschlag und ich werd's bei mir testen ;)
Würde mich nämlich echt interessieren, ob der Unterschied groß ist.
cu
|
16.05.2003, 21:52:10
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Klatsch das mal rein:
PHP-Code:
$var='D11'; $hex=array('A','B','C','D','E','F');
if (in_array(substr($var,0,1),$hex) && is_numeric(substr($var,1,2)))
echo 'Gefindet.';
else
echo 'Gefindet ni.';
Solche Messungen führt man übrigens mehrere Male durch -> statistische Abweichung.
Hab mal einen alten Benchmark umgeschrieben:
PHP-Code:
<?php
set_time_limit(0);
$var='D11'; $hex=array('A','B','C','D','E','F');
$count_f=0;
for ($i=0; $i<1000; $i++)
{
$start=microtime();
if (in_array(substr($var,0,1),$hex) && is_numeric(substr($var,1,2)))
echo 'Gefindet.<br>';
else
echo 'Gefindet ni.<br>';
$count_f+=microtime()-$start;
}
$count_w=0;
for ($i=0; $i<1000; $i++)
{
$start=microtime();
$search = ereg("^[A-F][0-9][0|1]?$",$var);
if($search)
echo "Gefunden!<br>";
else
echo "Nichts gefunden!<br>";
$count_w+=microtime()-$start;
}
echo "<br><br>";
echo "Durchschnitt 1: ".($count_f/1000)."<br>n";
echo "Durchschnitt 2: ".($count_w/1000)."<br>n";
echo "<br><br><b>Fertig.</b>";
exit;
?>
Da wechselt der Gewinner immer mal. Statistik halt.
Geändert von c4 (16.05.2003 um 21:56:43 Uhr)
|
16.05.2003, 22:13:08
|
Junior Member
|
|
Registriert seit: May 2002
Beiträge: 179
|
|
ok, hab dein komplettes Skript übernommen:
1 Durchlauf:
Durchschnitt 1: 2.7191E-005
Durchschnitt 2: 2.6151E-005
2 Durchlauf:
Durchschnitt 1: 5.337E-005
Durchschnitt 2: 2.8938E-005
3 Durchlauf:
Durchschnitt 1: 2.8677E-005
Durchschnitt 2: 3.1513E-005
4 Durchlauf:
Durchschnitt 1: 3.1417E-005
Durchschnitt 2: 2.5938E-005
5 Durchlauf:
Durchschnitt 1: 2.8465E-005
Durchschnitt 2: 3.5404E-005
6 Durchlauf:
Durchschnitt 1: 3.3862E-005
Durchschnitt 2: 3.0071E-005
OK, so läufts bei mir..
im Übrigen weiß ich auch, dass Benchmarks öfters durchgeführt werden.. denke nicht, dass ich ein absoluter Anfänger in der Computerwelt bin, nur weil ich nicht 900 posts hab.
|
17.05.2003, 07:35:56
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Also kann man sagen, dass es bei dem Beispiel egal ist, ob manreg. Exp. oder Stringfunktionen nimmt. Letztere werde ich aber trotzdem bevorzugen. :)
Zitat:
im Übrigen weiß ich auch, dass Benchmarks öfters durchgeführt werden.. denke nicht, dass ich ein absoluter Anfänger in der Computerwelt bin, nur weil ich nicht 900 posts hab
|
Locker bleiben! War doch nur ein Satz. Ich wollte nicht zum Ausdruck bringen, dass ich Dich belehren muss, nur weil ich mehr Posts habe. Geklärt? Gut. Danke.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:18:42 Uhr.
|