Dobrý večer, nedávno jsme se trochu dotkli tématu hesel a jejich bezpečného uložení, konkrétně jsme studovali funkci hašování. Dnes budeme v tématu hesel a jejich ukládání trochu pokračovat a prostudujeme si funkce, se kterými můžete odstranit mezery ze začátku a konce řetězce. A zde jsou hesla a odstranění mezer z řetězce, to mi řekni ty? Za prvé, tato funkce se samozřejmě netýká konkrétně hesel, ale pracuje pouze s řetězci a o heslech jsem hovořil pouze jako o její aplikaci. Proto jej můžete použít kdekoli a kdykoli budete chtít, podle vaší situace.
K čemu to je? oříznout mezery na začátku a na konci řádku? Pokud na webu při registraci zadáte heslo a nějakým způsobem omylem stisknete mezerník a nevšimnete si toho, pak se vaše heslo nebude skládat například ze čtyř znaků, ale z pěti, včetně vaší mezery. A nebudete chápat, proč heslo není vhodné, protože hash tohoto řetězce bude jiný. Proto vždy doporučuji ořezat mezery v řádku, aby se předešlo takovým nuancím. Nyní přejdeme k příkladu z praxe.
$string_pass = " 1234 "
;
$password = md5(trim($string_pass ));
$password2 = md5($string_pass );
echo $heslo;
echo "
"
;
echo $heslo2;
?>
Vytvoříme proměnnou, která bude naším heslem a konkrétně označíme mezeru na začátku a na konci řádku. Dále vytvoříme proměnnou, ve které již bude hashované heslo uloženo, a projdeme jím řádek funkce trimování, který nejprve odstraní všechny nepotřebné mezery a teprve poté získáme hashované heslo. A v druhé proměnné nepoužijeme funkci k odstranění mezer a hned zahašujeme řetězec. Poté zobrazíme dva výsledky na obrazovce prohlížeče a vidíme, že jsou zcela odlišné, i když jsme v obou případech použili stejný řetězec. Vzhledem k mezerám je ale výsledek úplně jiný, takže je potřeba být s touto záležitostí maximálně obezřetný. A poslední věc, kterou bych vám měl říct. Existují dvě další funkce, které odstraňují mezery na začátku řádku nebo na konci řádku, a nazývají se ltrim A rtrim respektive. Pokud tedy potřebujete odstranit mezery z některé ze stran, použijte je. A tímto uzavírám tento článek a přeji vám mnoho úspěchů ve vaší práci.
Při práci s textem jej často musíte formátovat. To je nezbytné pro správné zobrazení a snadnou čitelnost. To je nutné, pokud uživatel zadá nějaké informace a udělá chyby: místo jedné mezery označí dvě mezery a na začátek umístí tabulátor. Existuje několik způsobů, jak odstranit mezery v PHP.
Oříznout()
Funkce Trim hledá další znaky na začátku nebo na konci řetězce. Tento:
- pravidelný prostor;
- tabelování;
- znak konce řádku.
Píše se v tomto tvaru:
Oříznutí řetězce (řetězec $str [, řetězec $character_mask = "\t\n\r\0\x0B" ])
$str je zpracovávaný řetězec a $character_mask jsou další znaky. $character_mask je volitelný atribut.
Preg_replace
Funkce pro vyhledávání a nahrazování znaků pomocí regulárního výrazu.
Smíšené preg_replace (smíšené $pattern , smíšené $replacement , smíšené $předmět [, int $limit = -1 [, int &$count ]])
- $pattern - vzor, který hledáte.
- $replacement - znaky k nahrazení.
- $předmět - zpracovávaný objekt.
- $limit - počet provedených výměn.
$pattern a $replacement mohou být pole. V tomto případě se výměna provádí v souladu s indexy.
Str_replace()
Mezery z řetězce v PHP můžete odstranit pomocí metody str_replace(). Nahradí všechny výskyty hledaného řetězce náhradním řetězcem.
Smíšené str_replace (smíšené $search , smíšené $nahradit , smíšené $předmět [, int &$count ])
Používá se jako zjednodušená metoda preg_replace().
- $search – hodnota, která má být nalezena.
- $nahradit - řetězec, který má být nahrazen.
- $předmět - objekt, ve kterém se provádí hledání a nahrazování.
- $count nastavuje počet výměn.
Příklad hledání a nahrazení mezer
Tyto funkce se uplatní ve většině situací, i těch složitějších.
Uživatel například zadal některá data, která se později vytisknou na obrazovku. Pro zlepšení čitelnosti a vnímání textu jako celku je potřeba tyto informace zpracovat – odstranit opakované mezery, nahradit je jednotlivými.
$text1 = "Dlouhý text s mezerami navíc";
V tomto případě můžete vidět, že mezi slovy jsou dvě a tři mezery. Postup pro odstranění mezer v PHP je následující.
1. Nejprve musíte pomocí funkce proměnit řetězec na pole řetězců.
Explode(“ ”, $text1)
Jako oddělovač se používá jedna mezera. Tímto způsobem budou části těla, které nejsou samostatnými prvky pole, obsahovat o jeden prostor méně.
2. Výsledkem je pole řetězců, jako je toto:
$array = ["Dlouhý", "objemný", "text", "s", "mezery navíc"]
3. Každý prvek je zpracován funkcí:
Preg_replace("/\s+/", " ", $text1)
Chcete-li vyhledat jednu nebo více mezer, použijte regulární výraz /\s+/. Všechny nalezené shody jsou nahrazeny řetězcem „ “. Vyhledávání se provádí v proměnné $text1.
4. Výsledkem je řetězec se správným počtem mezer, který uživatel snadno vnímá.
V jakémkoli jazyce je při práci s řetězci typickým úkolem odstranění mezer na začátku i na konci řádku. V PHP jsou pro tyto účely tři funkce: ltrim(), rtrim(), trim(). Funkce ltrim() odstraňuje mezery na začátku řádku, rtrim() - na konci řádku, trim() - na začátku i na konci. Zajímavé je, že tyto funkce kromě mezer také odstraňují nový řádek, návrat vozíku, tabulátor a sekvence escape znaků null.
$example = "\tAhoj všichni\n"; var_dump(trim($příklad)); var_dump(rtrim($příklad)); var_dump(ltrim($příklad));
V důsledku toho dostaneme:
Řetězec "Ahoj všichni" (délka=12) řetězec "Ahoj všichni" (délka=14) řetězec "Ahoj všichni" (délka=13)
Nejzajímavější je, že výše uvedené funkce mohou také odstranit uživatelem zadané znaky. K tomu je třeba, aby výše uvedené funkce předaly jako druhý argument řetězec obsahující znaky, které mají být odstraněny. Například:
$example = "Ahoj všichni\n"; var_dump(trim($příklad, " y")); var_dump(rtrim($příklad, " y\n")); var_dump(ltrim($příklad, " yH"));
Jako výsledek:
Řetězec "Ahoj všichni" (délka=13) řetězec "ahoj všichni" (délka=13) řetězec "já všichni" (délka=12)