Avatar
Serveronaut
Člen
Avatar
Serveronaut:

Dělám to tak, že text co uživatel zašle uložím do další proměnné a poté odstraním to co nechci počítat (interpunkční znaménka, mezery, řádkování, atd. atd...) pomocí

str_replace

a poté spočítám počet znaků klasicky pomocí

strlen

...

Není nějaký elegantnější způsob nebo nějaký fígl? :)
Děkuji

 
Odpovědět 25.3.2015 15:30
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Serveronaut
Inoue Yūki:

Jak to myslíš elegentní? Napadá mě asi jen mb_strlen, který by ti měl ošetřit unicode znaky... :)

Nahoru Odpovědět 25.3.2015 15:36
Avatar
vosa53
Člen
Avatar
vosa53:

Můžeš to dělat pomocí regulárního výrazu.

<?php
mb_internal_encoding("UTF-8");
$textOdUzivatele = '***-§**)b#%(*&^$#464822jnhgi###';
$delkaTextu = mb_strlen($textOdUzivatele) - mb_strlen(preg_replace('/[A-Za-z0-9]/', '', $textOdUzivatele));
echo($delkaTextu);
?>

Výstup:

12
 
Nahoru Odpovědět  +1 25.3.2015 16:41
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na vosa53
patrik.valkovic:

Pěkné řešení, místo abys filtroval co tam nechceš (a všechny abecedy světa bych filtrovat fakt nechtěl) tak odstraníš co potřebuješ a rozdíl je poté počet znaků, které si odstranil (tedy ty, které počítáš). Jen pro osvětlení.

Nahoru Odpovědět 25.3.2015 17:57
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:

Nebo odstranit všechny znaky vyjma znaku slova.

mb_internal_encoding("UTF-8");
$text_od_uzivatele = '***-§**)b#%(*&^$#464822jnhgi###';
$delka_textu = mb_strlen(preg_replace('~[^\\w]~Uis','',$text_od_uzivatele));
echo $delka_textu;
 
Nahoru Odpovědět 25.3.2015 18:26
Avatar
vosa53
Člen
Avatar
Odpovídá na 1Pupik1989
vosa53:

No jo mohl jsem to jednoduše znegovat a smazat jen ty ostatní znaky a nemusel jsem dělat tu šaškárnu s odčítáním znaků. :D

 
Nahoru Odpovědět 25.3.2015 19:08
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na vosa53
1Pupik1989:

A proto tu jsme a dáváme hlavy dohromady. Nevydět tvůj regulární výraz, tak bych nejspíš ani nereagoval. :) Nicméně tvůj regex by vynechával háčky a čárky.

 
Nahoru Odpovědět 25.3.2015 21:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.