Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: PHP: Zeichen zählen /Sonderfall

  1. #1
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719

    PHP: Zeichen zählen /Sonderfall

    Hallo,
    mit strlen($variable) kann ich die Anzahl der Zeichen in einem String zählen. Wie gehe ich nun vor, wenn ich eine Textpassage ausschließen möchte?


    Beispieltext: Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr.


    Nun möchte ich die Zeichen zählen. Alle Zeichen die rot markiert sind (also auch die Tags) möchte ich NICHT mitzählen.

    Weiss jemand von euch wie das funktioniert?

  2. #2
    TP-Supporter
    Registriert seit
    Dec 2005
    Beiträge
    455
    Zitat Zitat von dieter99
    Hallo,
    mit strlen($variable) kann ich die Anzahl der Zeichen in einem String zählen. Wie gehe ich nun vor, wenn ich eine Textpassage ausschließen möchte?


    Beispieltext: Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr.


    Nun möchte ich die Zeichen zählen. Alle Zeichen die rot markiert sind (also auch die Tags) möchte ich NICHT mitzählen.

    Weiss jemand von euch wie das funktioniert?
    klar, in dem Fall schon, aber das wäre ja nicht sehr elegant. Sag mal, nach welchen Regeln du Zeichen ausschließen willst.

    In diesem Fall gäbe es viele möglichkeitne, eine davon:

    PHP-Code:
    $string 'Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr';
    echo 
    strlen(str_replace(' <br>Meteorologen warnen</br>',''$string)); 

  3. #3
    TP-Supporter
    Registriert seit
    Feb 2005
    Beiträge
    365
    Also "einfach so" wird das nicht gehen. Ich würde das so machen, dass ich alles zwischen <font> und </font> (oder wie auch immer du den roten Text formatierst) in einer neuen Variablen rauslösche und dann die Länge der neuen Variablen zähle.

  4. #4
    TP-Supporter
    Registriert seit
    Dec 2005
    Beiträge
    455
    Zitat Zitat von Driver
    Also "einfach so" wird das nicht gehen. Ich würde das so machen, dass ich alles zwischen <font> und </font> (oder wie auch immer du den roten Text formatierst) in einer neuen Variablen rauslösche und dann die Länge der neuen Variablen zähle.
    klar geht es einfach so, wie ich es gemacht habe. Aber ich habe ja extra gefragt, nach welchem Schema er vorgeht. Angenommen er formatiert durhc <font> und </font> und möchte das dazwischen ausschließen, kann er es natürlich auch mit RegExp machen:

    PHP-Code:
    $string 'Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr';

    $pattern '#(.*)(<\/font>)(.*)(<\/font>)(.*)#im';

    $bla preg_replace($pattern'$1 $2'$string);

    echo 
    strlen($bla); 
    edit: ungetestet!

  5. #5
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Guck dir strpos() an, diese Funktion liefert die Position des Suchstrings zurück.

    Edit: Die Methode mit dem Entfernen der überflüssigen Zeichen ist schneller und einfacher zu programmieren.
    Geändert von Strogij (28.12.2005 um 19:29 Uhr)

  6. #6
    TP-Supporter
    Registriert seit
    Feb 2005
    Beiträge
    365
    Zitat Zitat von [jacky]
    klar geht es einfach so, wie ich es gemacht habe. Aber ich habe ja extra gefragt, nach welchem Schema er vorgeht. Angenommen er formatiert durhc <font> und </font> und möchte das dazwischen ausschließen, kann er es natürlich auch mit RegExp machen:

    PHP-Code:
    $string 'Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr';

    $pattern '#(.*)(<\/font>)(.*)(<\/font>)(.*)#im';

    $bla preg_replace($pattern'$1 $2'$string);

    echo 
    strlen($bla); 
    edit: ungetestet!
    Als ich angefangen hab mit schreiben, war dein Post noch garnicht da

  7. #7
    TP-Supporter
    Registriert seit
    Dec 2005
    Beiträge
    455
    Zitat Zitat von Driver
    Als ich angefangen hab mit schreiben, war dein Post noch garnicht da
    ja normal nicht, der steht ja auch unter deinem, und bezieht sich sogar auf deinen post
    denn ich sagte, dass meine 1. version funzt ... nur ich weiß nicht, nach welchem schema er vorgeht, meine 2. version bezieht sich darauf, wenn er <font> und </font> + inhalt dazwischen nicht mitzählen will ...

  8. #8
    TP-Supporter
    Registriert seit
    Dec 2005
    Beiträge
    455
    Zitat Zitat von [jacky]
    klar geht es einfach so, wie ich es gemacht habe. Aber ich habe ja extra gefragt, nach welchem Schema er vorgeht. Angenommen er formatiert durhc <font> und </font> und möchte das dazwischen ausschließen, kann er es natürlich auch mit RegExp machen:

    PHP-Code:
    $string 'Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr';

    $pattern '#(.*)(<\/font>)(.*)(<\/font>)(.*)#im';

    $bla preg_replace($pattern'$1 $2'$string);

    echo 
    strlen($bla); 
    edit: ungetestet!
    Ups, mir ist en kleiner Fehler unterlaufen:

    PHP-Code:
    $string 'Es braut sich etwas zusammen: <br>Meteorologen warnen</br> in einigen Teilen Deutschlands vor Schneestürmen und extremer Glatteisgefahr';

    $pattern '#(.*)(<\/font>)(.*)(<\/font>)(.*)#im';

    $bla preg_replace($pattern'$1 $5'$string);

    echo 
    strlen($bla); 
    so sollte es richtig sein

  9. #9
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    ich möchte es etwas konkretisieren:

    ich habe ein Forum in dem ich nun von jedem User die Beiträge (genauer gesagt die Zeichen) zählen möchte. Wenn jemand beim verfassen eines Beitrags einen anderen Beitrag zitiert, dann werden Zeichen mitgezählt die der jeweilige User gar nicht selbst geschrieben hat. Daher möchte ich nun alle Zeichen aussschließen, die zwischen [QUODE] und [/QUODE] (extra falsch geschrieben) gesetzt sind. Wie gehe ich nun am schnellsten/effektivsten vor?

  10. #10
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Du könntest mit preg_replace() die ganzen [QUODE]-Stellen entfernen:
    PHP-Code:
    $original '123 [quode]lalala[/quode] 456';
    $temp preg_replace('/[quode].+[\/quode]/i'''$original);

    echo 
    'Zeichen: '.strlen($temp).'<br />String: <b>'.$temp.'</b>'

  11. #11
    TP-Supporter
    Registriert seit
    Dec 2005
    Beiträge
    455
    Zitat Zitat von Strogij
    Du könntest mit preg_replace() die ganzen [QUODE]-Stellen entfernen:
    PHP-Code:
    $original '123 [quode]lalala[/quode] 456';
    $temp preg_replace('/[quode].+[\/quode]/i'''$original);

    echo 
    'Zeichen: '.strlen($temp).'<br />String: <b>'.$temp.'</b>'
    Ich glaube du musst noch die [ und ] escapen, da diese ansonsten als Zeichenklasse angesehen werden!

  12. #12
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    jacky, was meinst du damit?

  13. #13
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    1. heisst das QUOTE und nicht QUODE
    2. gibt es noch mehr Tags (alle BB-Codes)
    3. besitzt das Forum eine Tabelle mit allen BB-Codes
    4. kannst Du Dir die Stelle im Forum anschauen, wo die Posts dargestellt werden
    5. escapen = vorangestellter Backslash (\), also
    $temp = preg_replace('/\[quote\].+\[\/quote\]/i', '', $original);

    ausserdem gibt es noch Erweiterungen, z.B.
    PHP-Code:
    [QUOTE=dieter99]...[/QUOTE
    Geändert von steffenk (29.12.2005 um 10:57 Uhr)

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  14. #14
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    @jacky: Stimmt, habe es übersehen (Uhrzeit beachten ).
    Zitat Zitat von St@eff.en
    1. heisst das QUOTE und nicht QUODE
    Lesen:
    Zitat Zitat von dieter99
    Daher möchte ich nun alle Zeichen aussschließen, die zwischen [QUODE] und [/QUODE] (extra falsch geschrieben) gesetzt sind.

  15. #15
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Zitat Zitat von St@eff.en
    ausserdem gibt es noch Erweiterungen, z.B.
    quote=dieter99...quote
    Gibt es eigentlich auch ein Platzhalterzeichen? Damit ich sagen kann ersetze alles was mit quote beginnt?

    also:

    quote
    quote=
    quote=dieter99
    quote=franz

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51