Jak odstranit nadbytečné mezery v PHP

phpman

Jak odstranit nadbytečné mezery v PHP
« kdy: 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


Tomas2

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:Jak odstranit nadbytečné mezery v PHP
« Odpověď #1 kdy: 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)));

DW

Re:Jak odstranit nadbytečné mezery v PHP
« Odpověď #2 kdy: 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.

Tomas2

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:Jak odstranit nadbytečné mezery v PHP
« Odpověď #3 kdy: 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.

Kit

Re:Jak odstranit nadbytečné mezery v PHP
« Odpověď #4 kdy: 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á.