Autor Zpráva
PetraPP
Profil
Ahojte,
snažím se už přes hodinu smazat mezery obsažené v array, které jsou obsažené na začátku a konci textu. Bohužel pokud jde o dvojtou mezeru, nejde z array smazat, ze dvou mezer zůstane jedna.

$text = array(" Heureka.cz ","  Heureka.cz "," Kosmetika a zdraví "," Kosmetika");

Používám:
$bez_mezer = array_map('trim', array_filter($text));

Výsledek je ten, že se mezery smažou, ale ta dvojtá u druhého Heureka.cz tam prostě zůstane. Místo dvou mezer na začátku zůstane jedna. A ani tu druhou nelze smazat. Použiji v podstatě 2x za sebou array_map s trim a klidně i s ltrim, tak se mezera nesmaže.

Už si nevím rady. Hrozně moc všem děkuji za výpomoc.
RastyAmateur
Profil
PetraPP:
Zajímavé, mně to funguje naprosto dobře.
Jinak je tam nutný ten array_filter()? Jediný jeho efekt podle mě bude, že vyhodí z $$text položky ve tvaru prázdného řetězce...
Keeehi
Profil
PetraPP:
To co máš funguje správně.
Problém bude asi v tom, že ta mezera reálně asi nebude obyčejná mezera, takže trim pak na ni nebude fungovat. To my tady na diskusi nezjistíme, protože tady ve tvém příspěvku jsou jen dvě obyčejné mezery.
PetraPP
Profil
Nějak se mně to nedaří. Dostávám stále:
array(6) {
  [0]=>
  string(10) "Heureka.cz"
  [1]=>
  string(12) " Heureka.cz"
  [2]=>
  string(19) "Kosmetika a zdraví"
  [3]=>
  string(9) "Kosmetika"
  [4]=>
  string(18) "Vlasová kosmetika"
  [5]=>
  string(14) "Barvy na vlasy"
}

Snažím se načítat tento XML feed: ladybio-cz.xml
.... za pomocí $xml = simplexml_load_file("../xml/ladybio-cz.xml");
Keeehi
Profil
Reálně tam je znak c2a0 což je nedělitelná mezera. C2 je jeden bajt, A0 je druhý bajt a dohromady v UTF-8 tvoří nedělitelnou mezeru. Což je krásně vidět i na [#4] jak Heureka.cz má 10 znaků a Heureka.cz s mezerou má 12 znaků. Tedy abych byl přesný znaků má 11 ale zabírá 12 bajtů. Možností jak to řešit je spousta ale já bych zvolil regulární výrazy.
array_map(function($v){return preg_replace('/^\s+|\s+$/u', '', $v);}, $text)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0