Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: phpman 21. 01. 2018, 17:22:04

Název: Jak odstranit nadbytečné mezery v PHP
Přispěvatel: phpman 21. 01. 2018, 17:22:04
Ahoj, jak můžu odstranit v proměnné nadbytečné mezery?
zdroj
Kód: [Vybrat]
$_POST['str'] = '  nejaky           text     ';požadovaný výsledek
Kód: [Vybrat]
$_POST['str'] = 'nejaky text';Našel jsem funkci trim(), která umí odstranit pouze krajní mezery. Díky za tip
Název: Re:Jak odstranit nadbytečné mezery v PHP
Přispěvatel: Tomas2 21. 01. 2018, 18:22:00
proč si řikáš "phpman" a přitom php očividně vůbec neumíš? :) Dokonce ani neumíš používat dokumentaci? Bez urážky, ale takhle se budeš na vše pořád ptát a nic neuděláš.

začal bych primitivní variantou, někdo určitě poradí elegantnější řešení:



$str = '  nejaky           text     ';
var_dump(trim(preg_replace('/\s+/', ' ',$str)));
Název: Re:Jak odstranit nadbytečné mezery v PHP
Přispěvatel: DW 21. 01. 2018, 23:27:08
mozno skor ~\s{2,}~ nech to zbytocne nenahradzuje, miesta ktore maju menej ako 2 medzery... btw, bacha toto nahradi aj ostatne whitespace znaky.
Název: Re:Jak odstranit nadbytečné mezery v PHP
Přispěvatel: Tomas2 21. 01. 2018, 23:50:31
DW: díky, jsem si vědom těhle nedostatků, stejně tak toho, že ne všechny neviditelné znaky to chytne (např. chr(11)). Možná by stačilo chytat pouze mezeru. Začal jsem původně všechny tyhle věci řešit, vč. počátečních a konečných mezer, kombinace více druhů netiskutelných znaků za sebou až jsem ten složitý regulár smazal a napsal tu nejjprimitivnější verzi a čekám, že autor upřesní zadání :).

Nebo existuje v php něco vhodnějšího? Rozdělení na pole a jeho filtrování za vhodnější nepovažuji, ale takové žešení jsem už také viděl.
Název: Re:Jak odstranit nadbytečné mezery v PHP
Přispěvatel: Kit 21. 01. 2018, 23:53:29
Odpověd jsi už dostal. Není mi však jasné, proč se to snažíš nacpat zpátky do $_POST. To pole by mělo být pouze pro čtení. Jeho modifikace je neefektivní a nebezpečná.