String aus Quelltext finden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • String aus Quelltext finden

    Hallo Experten,

    kurz und knapp. Ist es möglich via NSRange einen variablen String auszulesen?

    PHP-Quellcode

    1. <div id="user">
    2. <h5>Willkommen, <span>Max Mustermann!</span></h5>


    Könnte man also aus dem PHP-Text den Namen Max Mustermann "herausfischen"?

    Ich nutze an andere Stelle bereits NSRange, um nach einem bestimmten Schlagwort zu suchen. Ist es nun aber auch möglich, dass ich wie z.B. in diesem Fall nach "<h5>Willkommen, <span>" suche und den folgenden Text (bis zum </span> dann als NSString verarbeiten kann?

    Gruß, TWEAK
  • Das geht sehr einfach mit einem NSScanner, ins Trockene getippt:

    Quellcode

    1. NSScanner* scanner = [NSScanner scannerWithString:tagSoup];
    2. [scanner scanUpToString:@"<h5>Willkommen, <span>" intoString:nil];
    3. [scanner scanString:@"<h5>Willkommen, <span>" intoString:nil];
    4. NSString* name = nil;
    5. [scanner scanUpToString:@"</span>" intoString:&name];

    Nicht getestet und nur als Beispiel gedacht. Sollte ordentlicher und mit Fehlerhandling. Die Scanner-Methoden geben zurück, ob sie etwas gescannt haben.

    So wie dein Ausgangsmaterial aussieht, wäre es vielleicht sinnvoller, da mit einem HTML- oder XML-Parser dranzugehen.
    Multigrad - 360°-Produktfotografie für den Mac
  • Hallo und guten Morgen mattik,

    es gibt also tatsächlich eine Lösung - SUPER !!

    Ich bekomme die Daten aus einer PHP, die ich mittels NSURLConnection öffne.

    Zum Verständnis:
    Diese Daten lade ich in einen NSString. Diesen würde ich dann mit dem NSScanner "durchforsten". Als Ergebnis sollte ich dann "Max Mustermann" erhalten.

    Soweit richtig?

    Ich werde mich mal daran probieren, aber wohl nicht mehr jetzt :)

    vielen Dank nochmal, TWEAK
  • Tweak schrieb:

    Diese Daten lade ich in einen NSString. Diesen würde ich dann mit dem NSScanner "durchforsten". Als Ergebnis sollte ich dann "Max Mustermann" erhalten.

    Genau so.

    Das geht bestimmt auch mit den NSString-Suchfunktionen, NSRanges und viel Fummelei, aber Scanner sind da oft eine einfache, elegante und schnelle Lösung. Ich habe damit gerade einen vollständigen JSON-Parser in weniger als 200 Zeilen Code geschrieben.
    Multigrad - 360°-Produktfotografie für den Mac
  • Naja, so wie ichs verstanden habe ist ja auch NSScanner für genau solche Aufgaben gedacht. Schon als ich nur den Threadtitel las kam mir sofort NSScanner in den Sinn. Mit NSRange und Fummeln wäre ich wohl erst im dritten/vierten Anlauf gekommen. ;)
    [self setSignature:null];
    [[self postCount] increment];
  • naja, NSRange hat damit ja wenig zu tun weil man das im endeffekt als ergbnis erwartet. Gemeint waren wohl die NSString-methoden rangeForString etc...

    am php-script selbst kannst du nichts ändern oder?

    du lädst die datei nicht zufällig auch in ein webview? denn dann könntest du an den string ganz einfach via javascript kommen.
  • Hallo gritsch,

    ich lade diese Seite nicht in einen webView. Ich möchte mich via App auf einer Seite einloggen. Nachdem ich eingeloggt bin, wird der Cookie gespeichert und ich kann die Website bzw deren Inhalt in verschiedenen Stellen der App nutzen.
    Nachdem ich eingeloggt bin, erhalte ich ja die Daten, der NSURLConnection. In diesen Daten ist halt diese persönliche Andrede drin. Nun möchte ich in der App, dass nach dem Login steht: "Angemeldet als Max Mustermann". Der Login und die Darstellung der Websiteinhalte funktioniert. Jetzt geht es nur um dieses kleine Feature, dass der User nach dem Login auch seinen Namen sieht :)

    TWEAK