webForumDet fria alternativet

En fråga me preg_match

PHP

2 svar · 459 visningar · startad av dwmedia

Medlem sedan nov. 2006188 inlägg
Frågan#1

Behöver någon lösning som preg_match för att kontrollera text sträng a-z är lätt men behöver täcka upp kontrollen på den 7 bit default alphabet.

Inkluderas dessa tecken
https://www.smsnetwork.org/default_alphabet.html

Det är lite olika språk olika tecken detta är för automatiskt skicka SMS i unicode format, om dem skickar meddelande på japanska eller likande.

Idag så har jag löst det så dem får välja unicode meddelanden.
Men upptäckt att en hel del missar eller glömmer av sig och markera unicode så deras vänner får ????????????? tecken i mobilen.

Tänkte då kolla om det finns 1 enda tecken utanför alpabet så ska den automatiskt välja unicode modellen och sätta det till UTF-8 sträng. annars kör den på ISO.

Något tips på vad man bör kolla på för modeller, eller ska man hålla sig till preg_match och bara klänga in olika tecken.

Medlem sedan aug. 20039 340 inlägg
#2

Du bör kunna använda uttrycket:

/[^\n\r\s@£$¥èéùìòÇØøÅå?_FG?O??ST?^{}\\\[~\]|&#8364;ÆæßÉ!"#¤%&'()*+,-.\/0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà]/

/ ... / omslutning av uttrycket
[ ... ] en lista med tecken
[^ ... ] en lista med tecken, fast matcha ett tecken som inte finns i listan.
Listan är i princip bara teckenen i listan uppradade efter ^ (med undantag för några escapade tecken och teckengrupper.)

Dock gäller det att få PHP att känna igen de utökade tecknen i listan så att matchningen sker korrekt. (En del av tecknen i 7-bitars SMS-kodning räknas som utökade i Unicode.)
Om inte någon annan vill råtesta att det fungerar kan det vara en idé att flytta kollen till klientsidan, dvs JS. Detta har också fördelen att man kan varna användaren innan formuläret skickasm t ex med confirm-dialog som sedan kryssar i Unicode-kryssrutan om man väljer ok.

function containsExtendedChars(str){
	return /[^\n\r\s@£$¥èéùìòÇØøÅå?_FG?O??ST?^{}\\\[~\]|&#8364;ÆæßÉ!"#¤%&'()*+,-.\/0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà]/.test(str);
}

Här följer lite japanska tecken om du behöver det för testning.
猫わかわいいです

Medlem sedan nov. 2006188 inlägg
#3

JS delen vart ju något och tänka på också :) det är ju sant att det är ju en fördel göra vissa ändringar och meddela dem direkt.

Sedan så kan ju bara unicode köra med 70 tecken respektive 63 tecken om det är länkad.
Skulle kunna dra den direkt i JS samtidigt då man sänker antalen tecken som tillåts.

261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)