[PHP] - Gleich einige Fragen...
-
Hi Leute!
Anstatt euch zu nerven und für jede Frage ein Posting zu machen, stelle ich nun alle Fragen hier. Eventuell erldedigen sich die anderen Fragen durch eine Lösung der ersten Frage, ich weiss es nicht.
1. Ich überprüfe den Anfangsbuchstaben eines Strings nach A,B,C....Z und schreibe diesen dann jeweils in die Datei als $write_file. Warum schreibt der mir trotzdem, egal welcher Anfangsbuchstabe, immer ein Z vordran?
Hier mal ein kleiner Auszug:
$anfangsbuchstabe = substr($titel,0,1); if($anfangsbuchstabe = 'A') { $write_first = "A"; } .... ...... ... if($anfangsbuchstabe = 'Y') { $write_first = "Y"; } if($anfangsbuchstabe = 'Z') { $write_first = "Z"; } $fillin = fopen($dir.'variabel.php', "a+"); $inhalt = $write_first."|".$titel."|".$einleitung_bbcode."|".$text_bbcode."|".$autor."|".$email."|".$homepage."\n\n"; fwrite($fillin, $inhalt); fclose($fillin);
$write_first... der Schreibt, auch wenn der Stting einen Anfangsbuchstaben von "B" hat einfach nen Z hin. immer! Why?
2. Mit nl2br übernehme ich ein text genauso, wie er in einer TEXTAREA steht. Nun, wenn ich EIN mal Enter drücke, also nur EINE Zeile runter gehe, zeigt der mir im endergebnis trotzdem 2 Zeilen abstand an! oder 1 Zeile zwischendrin. Why?
ich hoffe, es liegt NICHT an der Umwandlung noch von BBCODE....
$einleitung = nl2br($einleitung); $text = nl2br($text); $einleitung_original = "$einleitung"; $einleitung_bbcode=bbcode($einleitung_original); $text_original = "$text"; $text_bbcode=bbcode($text_original);
3. letzte Frage: Wie lasse ich mit PHP nach dem Anfangsbuchstaben "A" in einer datei suchen und zeige nur das an, was auch A am anfang hat an?
Zb. ich habe in der Datei variabel.php 6 Zeilen die mit A beginnen und 20 mit B. Wie suche ich nach A und lasse nur die Zeilen ausgeben, die A haben? Und die mit B nicht?
Ich hoffe, ich störte euch nicht,
mfg
ProDanke zum Vorraus
, greeeeeeetz!!! aus der SCHWEIIIZZZ!
-
Zu Frage 1:
Deine Abfragen müssen so lauten:if($anfangsbuchstabe == 'A') { $write_first = "A"; }
Du musst in Abfragen stets das doppelte Gleichheitszeichen verwenden, da das einfache Zuweisungen vornimmt; folglich hast du mit if($anfangsbuchstabe = 'Z') der Variablen "Z" zugewiesen. Deshalb kam da immer Z raus.
Auf die anderen Fragen hab ich leider keine Antwort parat, sorry.
-
1.) Wozu hintereinander 26 if-Abfrage?! Mach's lieber irgendwie so:
$write_first = strtolower($anfangsbuchstabe{0}); // evtl. noch überprüfen, dass die nur ein Buchstabe zwischen a und z ist if(($write_first < 'a') || ($write_first > 'z')) $write_first = '';
2.) Doch, ich vermute, dass bbcode() nochmals ein nl2br drüberlaufen lässt (oder ein str_replace o.ä.)
Aber nimm dein nl2br doch einfach mal raus oder gib den $text_original aus und schau, ob da auch schon 2 Leerzeilen drin sind3.) Einfach bei jeder Zeile mit if überprüfen, ob es der gewünschte Anfangsbuchstabe ist
-
mar3000 schrieb:
Zu Frage 1:
Du musst in Abfragen stets das doppelte Gleichheitszeichen verwenden, da das einfache Zuweisungen vornimmt; folglich hast du mit if($anfangsbuchstabe = 'Z') der Variablen "Z" zugewiesen. Deshalb kam da immer Z raus.
Auf die anderen Fragen hab ich leider keine Antwort parat, sorry.
Klingt logisch! Dass ich nicht selber darauf gekommen bin...
.... naja, danke!
@flenders: Werde mal das nl2br rausnehmen...
Bei jeder Zeile mit if überprüfen? Das geht aber doch zu lange, wenn zB. 1023 Zeilen entahlten sind???aber ich denke, irgendwie mit
$num = 0; while ($num < 100) { $file = fopen("variabel.php", "a+"); $daten = fgets($file); $daten = explode("|", $datei_n.$num); if(preg_match($datei_n, "a")) { $a += $datei_n.$num; } ... }
Ich weiss nicht, ob das eine richtige Lösung wäre, ich denke der Ansatz ist teilweise richtig? mfg
pro
-
Zu 1. Funktioniert!
Zu 2. Habe nl2brt rausgenommen, bbcode macht doch eine nl2br voraus!
Zu 3. das ist und bleibt noch das einzige Problem.Thx!
http://www.swiss-portal.com/modules.php?name=workshop&file=test_auslese_daten
-
Ich kann mir kaum vorstellen, dass ein preg_match schneller ist, als ein simples if
Du könntest auch für jeden Anfangsbuchstaben ein Array anlegen und es dann über dyn. Variablen lösen - wird aber wohl auch kaum schneller sein
-
flenders schrieb:
Ich kann mir kaum vorstellen, dass ein preg_match schneller ist, als ein simples if
mit sicherheit nicht .. ! Eher gegenteilig.
-
also ich würde anstatt 26 if's ein switch vorziehen
zu 2.
Probier das mal so:<textarea name="textarea" wrap="VIRTUAL"></textarea>