Birgit: Großbuchstaben

Hi Leute!

Bräuchte eure Hilfe:

Möchte die Wörter welche in Großbuchstaben geschrieben sind auslesen.
Finde aber keine passende Funktion.

zb. in diesem Text:

Langtext: DIETER ASSMANN, Zur Frage der ehemaligen Verbreitung von Rauchstuben im tirolischen Oberinntal. FRIDOLIN DÖRRER, Tirols außenpolitische Beziehungen zu seinen Nachbarn im Norden und Süden. Überblick. KARL DÖRRER, Die Verlagerung der Nordtiroler Archive im zweiten Weltkrieg. NIKOLAUS GRASS, Trachtenkundliches aus tirolischen Gerichtsakten des 16. Jahrhunderts. FRANZ HUTER, Die Wiedererrichtung des medizinisch-chirurgischen Studiums zu Innsbruck nach 1814. FRANZ HEINZ HYE, ....

$nachname = split ($row_Recordset1['langtext']," "); //einzellne Wörter
$nachname = ??? (die Wörter mit den Grossbuchstaben);

Vielen Lieben Dank im Voraus
Birgit

  1. Hallo Birgit,

    $nachname = split ($row_Recordset1['langtext']," "); //einzellne Wörter
    $nachname = ??? (die Wörter mit den Grossbuchstaben);

    vielleicht mit
     preg_match_all("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/",$zurdurchsuchendertext,$match);
    (in $match[0] stehen dann die ganzen Namen)?

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hi Tobias!

      Dankeschön!!!!

      Habe deine Lösung probiert komme aber zu absolut gar keinen ergebnis;
      _____________________________________________________

      <?php echo $row_Recordset1['langtext']; ?>  <br><br>

      preg_match_all ("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/", $row_Recordset1['langtext'], $matches);
      echo $matches[0];

      ?>
      _____________________________________________________

      Ausgabe:
      // $row_Recordset1['langtext']:
      HANS HOCHENEGG, Wallfahrten über die Landesgrenzen. FRANZ HUTER, Die Fugger in Tirol. KARL ILG, Herd und Ofen. FRANZ KOLB, Ehrgefühl, Fehde und Gerichtsfriede unter den Tiroler Bauern. HANS KRAMER, Die Grundlinien der Außenpolitik Herzog Sigmunds von Tirol (II). WALTER SCHREIBER, Zur Lage des bäuerlichen Besitzstandes in Südtirol und im Trentino. GUSTAV BRAUN VON STUMM, Umstrittene Brixener und Innsbrucker Augustenses. FRANZ FLIRI, Tiroler Vornamen. JOSEF WINDHAGER, Die Postmeisterfamilie Härting.

      //Fehler aufgrund der preg_match_all Funktion:
      Array
      _____________________________________________________

      Liebe Grüsse nach Nürnberg und herzlichen Dank nochmal
      Birgit

      1. Hi Leute!

        Weist irgendwer an was mein vorhin beschriebenes Problem liegen könnte?
        Wäre wirklich über Hilfe erfreut, da ich schon den ganzen Vormittag versuche dieses Problem zu lösen.

        Liebe Grüsse und herzlichen Dank nochmal
        Birgit

    2. Hello Tobias,

      $nachname = split ($row_Recordset1['langtext']," "); //einzellne Wörter
      $nachname = ??? (die Wörter mit den Grossbuchstaben);

      preg_match_all("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/", $zurdurchsuchendertext,$match);
      (in $match[0] stehen dann die ganzen Namen)?

      Wärst Du eventuell noch bereit, die Lösung zu kommentieren? Da ich mit RegExp immer noch auf Kriegsfuß stehe und weiss, dass es vielen Anderen auch so geht, habe ich mich entschlossen, Aufgaben, Lösungen und Erklärungen dazu zu sammeln und dann auch irgendwann zu veröffentlichen. Es wird dann auch bei mir hoffentlich irgendwann Klick machen. Geht mir so, wie in der Schule früher mit den Integralen.

      Was ich bisher erkennen kann:

      "    PHP-String-Delimiter
      /    RegExp-Delimiter (Anfang, darf dann in der Expression nicht vorkommen)
      (    Beginn der 1. Backreferenz, *was auch immer das bedeutet*
      \s   Whitespace (Leerzeichen, Tabs, Umbruch, ...)
      [A-ZÖÄÜ]   Alle Zeichen von A-Z sowie ÖAU
      +    einmal oder öfter (bezieht sich auf die []
      (    Beginn der 2. Backreferenz
      (    Beginn der 3. Backreferenz
      \s   Whitespace
      [A-ZÖÄÜ]   Alle Zeichen von A-Z sowie ÖAU
      +    einmal oder öfter
      )    Ende der 3. Backreferenz
      |    oder (? kann ich hier nichts mit anfangen)
      (    ? noch eine Backreferenz?
      \s   Whitespace
      )
      )    Ende der 2.Backreferenz
      +    Das ganze einmal oder öfter
      )    Ende der 1. Backreferenz
      / RegExp-Delimiter (Ende der Expression, da mit Anfang so definiert)
      " PHP-String-Delimiter

      Ich habe mein Bestes gegeben. Nun bist Du gebeten, es zu vervollständigen und zu korrigieren.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hallo Tom,

        preg_match_all("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/", $zurdurchsuchendertext,$match);
        (in $match[0] stehen dann die ganzen Namen)?
        Wärst Du eventuell noch bereit, die Lösung zu kommentieren?

        klar - ich hatte nur um 11Uhr Klausur, und konnte deswegen nicht früher antworten :-)

        "    PHP-String-Delimiter
        /    RegExp-Delimiter (Anfang, darf dann in der Expression nicht vorkommen)

        doch, der Delimiter darf in der Expression vorkommen, muss aber mit \ maskiert werden (statt '/' kann man aber auch z.B. '=' nehmen)

        (    Beginn der 1. Backreferenz, *was auch immer das bedeutet*

        auf das was auf den Inhalt der runden Klammern "matcht" kann man im regulären Ausdruck selbst mit \1, \2, \3,...,\9 zugreifen, und bei z.B. preg_replace im 2.Parameter mit $1, $2, $3,..., $9.

        \s   Whitespace (Leerzeichen, Tabs, Umbruch, ...)

        ja, in dem Fall eben um die Leerzeichen zu erkennen (evtl. kann man auch Wortgrenzen suchen (\b), das habe ich aber noch nicht ausprobiert)

        [A-ZÖÄÜ]   Alle Zeichen von A-Z sowie ÖAU
        +    einmal oder öfter (bezieht sich auf die []
        (    Beginn der 2. Backreferenz
        (    Beginn der 3. Backreferenz

        richtig

        )    Ende der 3. Backreferenz
        |    oder (? kann ich hier nichts mit anfangen)

        das ist ein logisches "oder" - der Teil "((\s[A-ZÖÄÜ]+)|(\s))+" erkennt entweder ein Leerzeichen gefolgt von beliebig vielen (aber mindestens einem) Großbuchstaben ODER ein Leerzeichen - und das ganze einmal oder öfter.

        (    ? noch eine Backreferenz?
        \s   Whitespace
        )

        ich habe gerade gemerkt, dass der Teil eigentlich völlig überflüssig ist - als regulärer Ausdruck funktioniert
         /(\s[A-ZÖÄÜ]+(\s[A-ZÖÄÜ]+)+)/
        genauso prächtig.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    3. Hi Leute!

      Habs geschafft!!!!

      preg_match_all ("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/", $row_Recordset1['langtext'], $matches);
      echo implode(" , ", $matches[0]);

      $row_Recordset1['langtext']:

      HANS HOCHENEGG, Wallfahrten über die Landesgrenzen. FRANZ HUTER, Die Fugger in Tirol. KARL ILG, Herd und Ofen. FRANZ KOLB, Ehrgefühl, Fehde und Gerichtsfriede unter den Tiroler Bauern. HANS KRAMER, Die Grundlinien der Außenpolitik Herzog Sigmunds von Tirol (II). WALTER SCHREIBER, Zur Lage des bäuerlichen Besitzstandes in Südtirol und im Trentino. GUSTAV BRAUN VON STUMM, Umstrittene Brixener und Innsbrucker Augustenses. FRANZ FLIRI, Tiroler Vornamen. JOSEF WINDHAGER, Die Postmeisterfamilie Härting.

      echo implode(" , ", $matches[0]):
      FRANZ HUTER , KARL ILG , FRANZ KOLB , HANS KRAMER , WALTER SCHREIBER , GUSTAV BRAUN VON STUMM , FRANZ FLIRI , JOSEF WINDHAGER

      Vielen lieben Dank Tobias.