Zählen Sie Zeichen / SMS mit jQuery

8

Ich zähle Zeichen mit NobleCount und dem folgenden Code:

%Vor%

Ich möchte ein Feature wie das Zählen von SMS, wenn das Limit erreicht ist, sind die nächsten 160 Zeichen für die zweite SMS und so weiter. Ich kann Parameter wie on_update, on_positive, on_negative und block_negative verwenden.

Ich habe versucht, etwas mit Modulo, aber es funktioniert nicht. Irgendwelche Ideen?

    
Lost in OWL 16.01.2011, 11:57
quelle

10 Antworten

24

Erstens ist das Zählen von Zeichen sehr einfach. Sie müssen nur die Eigenschaft length für eine Zeichenfolge verwenden. Um die Anzahl der benötigten SMS-Nachrichten zu zählen, müssen Sie die Zahl durch 160 teilen und aufrunden (da für 161 Zeichen 2 Nachrichten erforderlich sind). Ihr Code sollte wahrscheinlich in etwa so aussehen:

HTML:

%Vor%

jQuery:

%Vor%

Siehe jsFiddle-Beispiel.

    
lonesomeday 16.01.2011, 12:16
quelle
38

Achten Sie darauf, dass SMS komplizierter ist, als Sie anscheinend angeben.

Standard "160 Zeichen" SMS verwendet eine seltsame 7-Bit-Codierung das die meisten ASCII, einige europäische Akzente, verschiedene Symbole wie €, einige griechische Großbuchstaben (die nicht wie römische Zeichen aussehen) abdeckt.

Wenn Ihre Nachricht andere Zeichen verwendet, kann sie stattdessen mit Unicode mit UCS-2 (wie UTF-16, aber nur BMP) für eine Grenze von 70 Zeichen codiert werden. Eigentlich sagt die Spezifikation UCS-2, aber Emoji (nicht-BMP Unicode) kann in SMS gesendet werden, so dass UTF-16 ist verwendet wird, in diesem Fall jeweils Emoji muss 2 Zeichen von den insgesamt 70 "verbrauchen".

Aber einige Sprachen können "National Language Shift Tables" verwenden. , die eine alternative 7-Bit-Codierung verwenden. Vor allem türkische, aber auch spanische, portugiesische und zehn indische Subkontinent Sprachen. Dies sind relativ neue Ergänzungen des Standards.

Selbst bei der 7-Bit-Codierung sind einige Zeichen "geflüchtet", was bedeutet, dass sie 2 Zeichen "verbrauchen". In der Standard-7-Bit-Codierung sind dies: {}[]\|^~€ .

Wenn Ihre Nachricht mehr als 160 Zeichen umfasst, kann sie "verkettete SMS" verwenden, aber dann wird jeder Nachricht ein kleiner Header hinzugefügt, was bedeutet, dass jedes Segment nur Platz für etwa 153 Zeichen bietet. Es gibt zwei verschiedene Versionen dieses Headers, die unterschiedlich groß sind, also nicht 153 Zeichen, sondern 152 (aus dem Speicher). Ähnlich verhält es sich bei Unicode-verketteten SMS mit dem kleinen Header mit 67 Zeichen pro Segment.

Viel Glück mit all dem!

    
Craig McQueen 15.08.2011 04:50
quelle
10

Hier ist ein kleines Plugin für dich. Es ist mein erstes jQuery-Plugin, ich gebe es kostenlos;) Sie müssen es nur mit starten:

%Vor%

Das HTML:

%Vor%

Das Javascript (aktualisiert am 18.8.2014):

%Vor%

DEMO: Ссылка

HINWEIS: Es gibt einige grundlegende Optionen

%Vor%     
sulest 22.02.2014 14:23
quelle
3

Sobald die Nachricht entschlüsselt wurde, wie Craig McQueen in einem dieser Thread-Post angegeben hat, und Sie haben Ihre tatsächliche Anzahl an Zeichen, um den benötigten SMS-Betrag zu zählen, genügt folgendes:

%Vor%

... Ich mag One-Row-Lösungen so sehr.

    
TechNyquist 16.02.2012 17:15
quelle
2

Ich denke, das folgende Skript kann eine genauere Berechnung von SMS-Teilen erzeugen:

%Vor%

Beispiel verwenden:

%Vor%     
Osama Abdulsattar 25.02.2012 10:33
quelle
2

Jedes Zeichen aus der Erweiterungstabelle (GSM Extended Alphabet) wird durch zwei Zeichen dargestellt. Die tatsächliche maximale Länge wird dynamisch wie folgt berechnet: 160 - k, wobei k die Anzahl der in der Nachricht verwendeten erweiterten Zeichen ist.

Sie müssen auch berücksichtigen, dass die Nachrichtenlänge bei der Verkettung von Nachrichten mit einer 8-Bit-Referenznummer 153 Zeichen beträgt.

Die Unicode-Länge beträgt 70 Zeichen und die verketteten 63 Zeichen.

    
peshis 06.03.2012 02:27
quelle
1

Aufgrund der Probleme versuche ich eine bessere Lösung zu schreiben. Angenommen von mehreren besten Antworten hier.

Javascript

%Vor%

HTML

%Vor%

Sie können den Code hier Ссылка

erhalten

Hoffe, das wird deine Probleme lösen. Danke

    
Satriya Agus 19.07.2012 01:15
quelle
0

Ich habe das Skript (für meine Zwecke) aktualisiert, um das Thema ebenfalls in die Zählung einzubeziehen. Das ist, was ich gefunden habe:

%Vor%

});

Ich habe getestet und es funktioniert. Ich ändere auch das HTML ein bisschen:

%Vor%     
H. Ferrence 02.08.2011 17:14
quelle
0

Das ist zu spät für das Spiel, aber hier ist, was ich gerade zusammenstelle.

Die Zeichenbeschränkung ist auf 459 eingestellt, um verkettete Nachrichten (wie von meinem Dienstanbieter festgelegt) mit einer Texteinheit, die pro 160 Zeichen verwendet wird, zu ermöglichen. Beachten Sie, dass dieser Aspekt unvollständig ist, da jede Einheit nach der ursprünglichen weniger als die 160-Zeichen-Vorlage aufgrund von Nachrichtenheadern und so weiter enthalten würde. Ich habe noch nicht die genaue Aufschlüsselung vom Anbieter bekommen.

Der entscheidende Unterschied in diesem Skript besteht darin, dass die Anzahl der Zeichen für Nicht-Standard-GSM-Zeichen empfindlich ist, deren Ascii-Werte im eingeschlossenen Array angegeben sind. Wenn ein Nicht-Standardzeichen eingegeben wird, ist die Anzahl 2, andernfalls 1.

%Vor%     
Eamonn 09.12.2012 13:52
quelle
0

Für SMS, die Zeichenanzahl senden

Logik / Anforderung:
  1. wenn len & lt; = 160 als senden (1 SMS)
  2. wenn len & gt; 160 und nach jeweils 153 Zeichen / len, dann senden (1 ++)
Anwendungsfall :
  1. len 1 bis 160 = SMS senden 1
  2. len 161 bis 313 = SMS senden 2
  3. len 314 bis 466 = SMS senden 3

Und so weiter ...

Skript:

%Vor%     
Rashedul Islam Sagor 08.08.2017 04:45
quelle

Tags und Links