IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: PHP jak jednoduše spočítat počet písmen/číslic

Aktivity
Avatar
Serveronaut
Člen
Avatar
Serveronaut:25.3.2015 15:30

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
Odpovídá na Serveronaut
Neaktivní uživatel:25.3.2015 15:36

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
Neaktivní uživatelský účet
Avatar
vosa53
Člen
Avatar
vosa53:25.3.2015 16:41

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
25.3.2015 16:41
Avatar
Odpovídá na vosa53
Patrik Valkovič:25.3.2015 17:57

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:25.3.2015 18:26

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:25.3.2015 19:08

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:25.3.2015 21:44

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.