ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
637
637
EMPFEHLEN
-
moin,
ich bin ein totaler anfänger in c++. Ich will einen string wie mit der Funktion eregi() in PHP untersuchen. In PHP sähe es etwa so aus:
aber wie lasse ich das ganze in c++ aussehen?PHP-Code:if(eregi("\<FONT COLOR=#(.{6})\>\(([a-zA-Z0-9]*)\) mmh", $string, $gefiltert)){
echo "mmh nich so!";
echo $gefiltert[0];
echo $gefiltert[1];
}
TobiasGeändert von DaRula (11.01.04 um 14:58 Uhr)
-
also ich bin in der msdn auf etwas gestoßen, aber es wirkt nen bissle kompliziert. ich kann damit nich so viel anfangen. gibts dafür wirklich keine einfache funktion wie eregi() in PHP?
-
nope, was daran liegt das strings in PHP vom interpreter aber in C/C++ vom programmierer verwaltet werden müssen...
Ein C string wird nicht länger blos weil dir die länge nicht passt....
-
das problem ist halt, dass ich verschiedene html-zeilen verarbeiten muss. was mich interessiert ist allerdings nur, was rechts steht, der eigentliche inhalt. der besteht wieder aus zwei teilen: dem namen und dem text. Aus der msdn werd ich nich schlau. kann mir das jemnand erklären?
-
Ok also das machste am einfachsten mit sscanf, die ergebnissdaten läste in /dev/null verschwinden, und die rückgabe ist die anzahl der verarbeiteten teile, welche wenn es nicht passt natürlich kleiner als die gesamtzahl ist.
Aber wie gesagt C is prinziell nicht dafür ausgerüstet, auch wenn man bei genauerem hinsehen durchaus die eine oder andere bibliothek für reguläre expressions findet, z.B. kann man mal in den PHP source rein gucken
-
mmh..das mit sscanf is wirklich ne gute idee, allerdings habe ich problemen bei strings:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
#include <stdio.h> int main() { char *buffer = "<font color=\"1234\">Hi"; float Ax, Ay; printf ("buffer:%s\n", buffer); sscanf(buffer, "<font color=\"%f\">%f", &Ax, &Ay); printf ("%f\n%f\n", Ax, Ay); return 0; }
ergebnis:
1234
-1037....
wie kannsch das in nen string ändern?
-
Also "Hi" ist eindeutig keine zahl...

von daher empfehle ich dir den formatspezifizierer %s ,... s für string. übergeben wird ein char* in welches dann der string geschrieben wird, oder wenn du die genaue länge kennst ein %c
-
ah, ok, thx
-
funktioniert soweit, allerdings nur, wenn vor bzw nach dem zu parsenden string/int ein leerzeichen steht.
wie geht es aber, wenn mann zum beispiel sowas auslesen will:
<font color="#cccccc">bla
das geht irgendwie nicht:
<font color=\"%s\">%s
-
[a-zA-Z0-9] <--- die klammer methode

so meinst du? in den klammern gibst du genau an welche zeichen es sein dürfen, sobald das erste nicht konforme zeichen auftaucht bricht er ab. Wie es genau funktioniert musste nachgucken, hab ich net ganz im kopf.
-
jo, genau das...ich such mal weiter ind er msdn
//edit: also %[a-z]s geht, aber wie verknüpfe ich die bedingungen? Laos nicht nur a-z, sondern auch A-Z, 0-9 und bestimmte sonderzeichen?Geändert von DaRula (26.01.04 um 22:09 Uhr)
-
Ich glaub einfach hintereinander schreiben also so
[a-zA-Z0-9!"§$&]
-
ne, das geht nicht.
[a-z] oder [A-Z] alleine geht, aber eben nicht gleichzeitig
Ähnliche Themen
-
eregi - Fehler?
Von Malaxo im Forum PHPAntworten: 5Letzter Beitrag: 02.03.08, 17:07 -
eregi() Problem
Von FingerSkill im Forum PHPAntworten: 2Letzter Beitrag: 06.01.07, 18:51 -
Frage zu eregi()
Von Pre7ender im Forum PHPAntworten: 7Letzter Beitrag: 24.11.06, 20:13 -
Problem mit eregi!
Von Cemil im Forum PHPAntworten: 5Letzter Beitrag: 26.08.04, 23:15 -
eregi !
Von DarkSummer im Forum PHPAntworten: 1Letzter Beitrag: 20.05.02, 12:12





Zitieren
Login






