Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 28.12.2005, 19:12   #1
TP-Insider
 
Benutzerbild von dieter99
 
Registriert seit: Dec 2001
Ort: Oberfranken
dieter99 ist auf einem guten Weg

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?
dieter99 ist offline   Mit Zitat antworten


Alt 28.12.2005, 19:15   #2
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
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)); 
[jacky] ist offline   Mit Zitat antworten
Alt 28.12.2005, 19:17   #3
TP-Supporter
 
Registriert seit: Feb 2005
Driver ist auf einem guten Weg
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.
Driver ist offline   Mit Zitat antworten
Alt 28.12.2005, 19:23   #4
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
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!
[jacky] ist offline   Mit Zitat antworten
Alt 28.12.2005, 19:25   #5
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
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).
Strogij ist offline   Mit Zitat antworten
Alt 28.12.2005, 20:13   #6
TP-Supporter
 
Registriert seit: Feb 2005
Driver ist auf einem guten Weg
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
Driver ist offline   Mit Zitat antworten
Alt 28.12.2005, 20:29   #7
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
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 ...
[jacky] ist offline   Mit Zitat antworten
Alt 28.12.2005, 20:30   #8
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
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
[jacky] ist offline   Mit Zitat antworten
Alt 29.12.2005, 01:56   #9
TP-Insider
 
Benutzerbild von dieter99
 
Registriert seit: Dec 2001
Ort: Oberfranken
dieter99 ist auf einem guten Weg
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?
dieter99 ist offline   Mit Zitat antworten
Alt 29.12.2005, 04:14   #10
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
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>'
Strogij ist offline   Mit Zitat antworten
Alt 29.12.2005, 10:21   #11
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
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!
[jacky] ist offline   Mit Zitat antworten
Alt 29.12.2005, 10:48   #12
TP-Insider
 
Benutzerbild von dieter99
 
Registriert seit: Dec 2001
Ort: Oberfranken
dieter99 ist auf einem guten Weg
jacky, was meinst du damit?
dieter99 ist offline   Mit Zitat antworten
Alt 29.12.2005, 10:52   #13
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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
__________________

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

Geändert von steffenk (29.12.2005 um 10:57 Uhr).
steffenk ist offline   Mit Zitat antworten
Alt 29.12.2005, 15:18   #14
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
@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.
Strogij ist offline   Mit Zitat antworten
Alt 30.12.2005, 10:36   #15
TP-Insider
 
Benutzerbild von dieter99
 
Registriert seit: Dec 2001
Ort: Oberfranken
dieter99 ist auf einem guten Weg
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
dieter99 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
PHP: Zeichen zählen /Sonderfall PHP: Zeichen zählen /Sonderfall
« form (button) method POST aber als link? | Vertriebstruktur - zuordnung von Id's »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 52 53 54 55 56 57 58 59 60