Erkennen, ob String mehr Buchstaben oder mehr Zeichen enthält?
Sven
- php
Hallo,
ich würde gerne mit einem Script erkennen können, ob ein String mehr Buchstaben/Zahlen enthält, oder zum großen Teil aus Zeichen besteht (Punkte, Striche, Dollarzeichen, und und...).
Ich hab mir dafür überlegt: Ich trage alle Buchstaben des Alphabets, Umlaute und Zahlen in ein Array ein und zähle dann mittels for-Schleife wie oft jeder von ihnen im String vorkommt. Das vergleiche ich dann mit der Gesamtlänge des Strings und schon hätte ich die Lösung.
Oder gibts noch einen einfacheren Weg?
Hintergrund: Ich habe ein Gästebuch. Dort werden Smiley-Kombinationen wie :-) in grafische Smileys umgewandelt. Grade die weiblichen User posten aber gerne ASCII-Bildchen, und dadrin würden Smileys nur stören. Im Moment kann man bei jedem Eintrag anklicken, ob man grafische Smileys für diesen Eintrag aktiviert haben möchte oder nicht. Ich würde das jedoch gerne automatisch erkennen lassen.
Daher mein oben beschriebener Gedanke. Was meint ihr?
Grüße
Sven
Grüße,
es wäre vllt wirklich der weg für regular-expression - oder kommen die nicht in frage?
MFG
bleicher
Hi,
es wäre vllt wirklich der weg für regular-expression - oder kommen die nicht in frage?
wie lautet denn das Muster für "mehr von Zeichenklasse X als von Zeichenklasse Y"?
Cheatah
Grüße,
wie lautet denn das Muster für "mehr von Zeichenklasse X als von Zeichenklasse Y"?
löschen der zeichen klasse A aus der kopie 1, löschen der zeichen der klasse 2 aus der kopie 2, längenvergleich?
MFG
bleicher
Hello,
wie lautet denn das Muster für "mehr von Zeichenklasse X als von Zeichenklasse Y"?
löschen der zeichen klasse A aus der kopie 1, löschen der zeichen der klasse 2 aus der kopie 2, längenvergleich?
Das ist zu kompilziert für Cheatah :-P
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi!
[...]längenvergleich?
Das ist zu kompilziert für Cheatah :-P
Ach Quatsch. Der hat nur keinen Laengenvergleich noetig...
Grundlage für Zitat #1262.
Guten Tag,
es wäre vllt wirklich der weg für regular-expression - oder kommen die
nicht in frage?
1. preg_match_all() auf Zeichen, die nicht a-z oder A-Z sind (optional weitere Zeichen), Ergebnisse werden in einem Array gespeichert
2. Länge der Gesamtzeichenkette bestimmen
3. Anzahl der gefundenen Einträge von Länge der Gesamtzeichenkette abziehen
= Anzahl der Komplementärzeichen
Zum Beispiel so:
<?php
$s="sfas45345cq3?43534a=§)";
preg_match_all("/[a-z]{1}/i", $s, $r); // Findet a-zA-Z
echo strlen($s) - sizeof($r[0]);
?>
Gruß
Christoph Jeschke
Hi,
ich würde gerne mit einem Script erkennen können, ob ein String mehr Buchstaben/Zahlen enthält, oder zum großen Teil aus Zeichen besteht (Punkte, Striche, Dollarzeichen, und und...).
da auch Buchstaben Zeichen sind, solltest Du vielleicht einen anderen Begriff verwenden. Ich schlage "Sonderzeichen" vor.
Ich hab mir dafür überlegt: Ich trage alle Buchstaben des Alphabets, Umlaute und Zahlen in ein Array ein und zähle dann mittels for-Schleife wie oft jeder von ihnen im String vorkommt. Das vergleiche ich dann mit der Gesamtlänge des Strings und schon hätte ich die Lösung.
Oder gibts noch einen einfacheren Weg?
Ja, den gibt es.
Hintergrund: Ich habe ein Gästebuch. Dort werden Smiley-Kombinationen wie :-) in grafische Smileys umgewandelt. Grade die weiblichen User posten aber gerne ASCII-Bildchen, und dadrin würden Smileys nur stören. Im Moment kann man bei jedem Eintrag anklicken, ob man grafische Smileys für diesen Eintrag aktiviert haben möchte oder nicht. Ich würde das jedoch gerne automatisch erkennen lassen.
Das ist nicht erwartungskonform. Der Nutzer erkennt sehr schnell, dass er sich auf diese Einstellung nicht verlassen kann, sondern das System schlicht und ergreifend _irgendwas_ tut, und wird folgerichtig Angst vor Bedienungsfehlern bekommen - der Worst Case der Usability. Wenn Du eine solche Erkennung einbaust, dann mache es so geschickt, dass der Nutzer sie a) erfährt, b) die Entscheidung über das Verhalten des Systems weiterhin selbst treffen kann und c) möglichst wenig im gewohnten Ablauf gestört wird.
Daher mein oben beschriebener Gedanke. Was meint ihr?
Ich meine, Du solltest clientseitig statt serverseitig arbeiten.
Cheatah
Hallo,
Das ist nicht erwartungskonform. Der Nutzer erkennt sehr schnell, dass er sich auf diese Einstellung nicht verlassen kann, sondern das System schlicht und ergreifend _irgendwas_ tut, und wird folgerichtig Angst vor Bedienungsfehlern bekommen - der Worst Case der Usability. Wenn Du eine solche Erkennung einbaust, dann mache es so geschickt, dass der Nutzer sie a) erfährt, b) die Entscheidung über das Verhalten des Systems weiterhin selbst treffen kann und c) möglichst wenig im gewohnten Ablauf gestört wird.
Daher mein oben beschriebener Gedanke. Was meint ihr?
Ich meine, Du solltest clientseitig statt serverseitig arbeiten.
Mit "Clientseitig" meinst du clientseitig-automatisch (JavaScript) oder vom Benutzer manuell einstellbar (Radiobuttons: Smileys an/aus)?
Ich fand es ja etwas verwirrend für den Benutzer, auswählen zu können, ob er für diesen Eintrag nun grafische Smileys aktiviert haben will. Ich könnte mir vorstellen, dass da auf jedenfall Fragezeichen im Kopf des Nutzers aufgehen (Was soll das denn?). Und auf eine umfangreiche Erklärung hab ich verzichtet... da ich mal davon ausgehe, dass mindestens 50% der Nutzer mit dem Begriff "ASCII-Bildchen" nicht viel anfangen können. Prozentual gesehen sind es ja doch sehr wenig Nutzer(innen) die das nutzen... aber die bringen eben auch Leben in die Bude, weswegen ich darauf schon Rücksicht nehmen möchte.
Hmmm...
Grüße
Sven
Hi Lars!
Ich meine, Du solltest clientseitig statt serverseitig arbeiten.
Mit "Clientseitig" meinst du clientseitig-automatisch (JavaScript) oder vom Benutzer manuell einstellbar (Radiobuttons: Smileys an/aus)?
Beides. Wenn der Text bestimmte Kriterien erfüllt (oder auch nicht), dann wird der Radiobutton gesetzt (oder auch nicht).
Ich fand es ja etwas verwirrend für den Benutzer, auswählen zu können, ob er für diesen Eintrag nun grafische Smileys aktiviert haben will.
Verwirrend ist es, wenn der Server mal so oder mal so reagiert. Meiner Meinung nach ist der Begriff "grafische Smileys" oder "Emoticons" bekannt genug, um einen Radiobutton mit entsprechendem Label anzubieten.
Außerdem gibt es auch Menschen, die einen relativ kurzen Post wie
----------------------
HAHA!
=) =) =) =) =) =)
----------------------
schreiben. Die würdest du mit deiner Variante diskriminieren - mal davon abgesehen, dass sie es vielleicht verdient hätten. ;-)
MfG H☼psel
Grundlage für Zitat #1264.
Hi!
Interessante Idee. My 2 cents:
Lass es einfach. Das macht die Bedienung nur komplizierter. Woher soll das Tool denn nun wissen, dass '... ist schon abgelaufen (9/2008)' das 8) nicht in einen Smiley umsetzen soll? Ich finde es gut, dass du dem User dei Wahl laesst, dann schreibt er bewusster. Aber eien Automatik kann eigentlich nur versagen.
Das Beispiel oben hatte ich naemlich heute in einer ICQ Konversation mit meiner Schwester. Wir beide (ich nutze Miranda, sie ICQ) haben dann einen Smiley gesehen und sie hat die 8 geraten. Erklaer mir aber mal, woran Deine Funktion an diesem Beispiel erkennen soll dass dort kein Smiley hingehoert.