hilfdirselbst.ch
Facebook Twitter gamper-media
webgrauen
Beiträge: 20
12. Jul 2002, 07:01
Beitrag #1 von 6
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


Ich suche nach einer Möglichkeit die nach der Eingabe von zu langen aaaaaaaa - zzzzzzzzzzz und 0000000 - 999999999999999 Ketten die in ein Formular eingegeben wurden abzuschneiden.

Hat Jemand eine bessere Möglichkeit als diese ?

$HTTP_POST_VARS[message]= preg_replace("/a{5,}/","cut", "$HTTP_POST_VARS[message]");
$HTTP_POST_VARS[message]= preg_replace("/b{5,}/","cut", "$HTTP_POST_VARS[message]");
$HTTP_POST_VARS[message]= preg_replace("/c{5,}/","cut", "$HTTP_POST_VARS[message]");
$HTTP_POST_VARS[message]= preg_replace("/d{5,}/","cut", "$HTTP_POST_VARS[message]");
$HTTP_POST_VARS[message]= preg_replace("/e{5,}/","cut", "$HTTP_POST_VARS[message]");

Mit eregi replace gehts aber mit preg replace siehts düster aus.


Top
 
X
webgrauen
Beiträge: 20
12. Jul 2002, 09:20
Beitrag #2 von 6
Beitrag ID: #7094
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


1. Möglichkeit habe ich schon gefunden, klappt aber leider nur mit Grossbuchstaben.

Ich schaffe es einfach nicht Gross und Kleinbuchstaben zusammen in diesen Ausdruck zu bekommen.


$HTTP_POST_VARS[message]= preg_replace("/([A-Z]){5,}/","\t", "$HTTP_POST_VARS[message]");


als Antwort auf: [#7080] Top
 
oesi50  A  S
Beiträge: 2315
12. Jul 2002, 10:30
Beitrag #3 von 6
Beitrag ID: #7100
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


Hi webgrauen,

schau mal hier:

http://www.php.net/manual/de/function.substr.php

ich glaube dieses ist für deinen Fall günstiger und dazu auch noch schneller und gilt für alle Zeichen, nicht nur für [A-Z].
Solltest Du dennoch reguläre Ausdrücke verwenden wollen, sieht das so aus: /[A-Z]|[a-z]|[0-9]/ der '|' entspricht in dem Fall 'oder'.

mfg oesi
_________________
A bis z groß und klein
0 bis 9 und underline
Beste Darstellung mit
IE9.3 SP5a

[ Diese Nachricht wurde geändert von: oesi50 am 2002-07-12 10:31 ]
als Antwort auf: [#7080] Top
 
webgrauen
Beiträge: 20
12. Jul 2002, 13:50
Beitrag #4 von 6
Beitrag ID: #7112
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


Ich habe das hier gerade mit Grossbuchstaben getestet,
geht perfekt.

Es sieht ganz so aus als wäre in der neuen PHP Version ein Bug drin(4.2.1)

$HTTP_POST_VARS[message]= preg_replace("/([A-Z]{5,})/","\t", "$HTTP_POST_VARS[message]");

Das klappt nämlich wirklich nicht mit Kleinbuchstaben.

Trotzdem danke Ösi.



als Antwort auf: [#7080] Top
 
Anonym
Beiträge: 22827
12. Jul 2002, 14:36
Beitrag #5 von 6
Beitrag ID: #7119
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


ich meinte das so hier:
Code:

$HTTP_POST_VARS[message]= substr($HTTP_POST_VARS[message],0,5);


als Antwort auf: [#7080] Top
 
Miro Dietiker
Beiträge: 699
12. Jul 2002, 22:47
Beitrag #6 von 6
Beitrag ID: #7143
Bewertung:
(1213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Zu lange Zeichenketten abschneiden


Hallo Zusammen...

Schnell einige klärende Worte:

Die Funktionen ereg_... und preg_... unterscheiden sich in
der Syntax des erwarteten Regulären Ausdruckes massiv!
Ich empfehle dem Programmierer für "standardfälle" klar die
preg (Voll Perl-Kompatible) Funktionen zu verwenden. Sie
sind meist auch in der Ausführung massiv schneller...

Das Problem Gross-Klein usw. Ist grundsätzlicher Natur:
Standardmässig unterscheidet preg Gross und Kleinschreibung.
Die Definition der Charakter-Klasse [A-Z] umfasst demnach
ausschliesslich Grossbuchstaben. Man verwende anstelle
[A-Za-z] (Sollte klappen..).

Im PHP-Manual findet man die Doku (für preg-Syntax) übrigends unter dem Schlagwort "Pattern Syntax" weiss man das nicht, wird man ewig suchen und kaum fündig.

Die elegantere lösung jedoch ist die verwendung der "Pattern Modifiers" (auch unter diesem Stichwort)
Man kamm damit definieren, dass der Reguläre ausdruck
CASE-Sensitive oder InSensitive ist. Modifiers werden
am Ende des Regulären ausdruckes gesetzt, NACH dem
abschliessenden Pattern-Zeichens. der Modifier "i" wird
Eure Beispiele oben auch für Gross/Klein funktionstüchtig machen.

Der Reguläre Ausdruck: "/([A-Z]){5,}/"
(Eigentlich heisst der Ausdruck selbst nur:
"([A-Z]){5,}" und die "/" Zu beginn und ende sind
Ein/Ausleitende Sequenzen, kann nun für die CASE-
Insensitivität so geschrieben werden:
"/([A-Z]){5,}/i"

Viel Spass dabei

Miro Dietiker
als Antwort auf: [#7080] Top
 
X