Autor Zpráva
Hlelep
Profil *
Ahoj, mám řetězec znaků (písmena, čísla nebo otazník) a potřeboval bych, aby za každý znak vložil mezeru. Ale když tam bude mínus, tak zůstane s předchozím znakem. Za poslední znak mezera taky nepřijde.

Např.

1X23?AN3-4AEBJCDEEJ

přelouská jako

1 X 2 3 ? A N 3- 4 A E B J C D E E J
peta
Profil
preg_replace('~?~', '$1 ', $str);
preg_replace('~[-] ~', '-', $str);
Jan Tvrdík
Profil
Hlelep:
$s = '1X23?AN3-4AEBJCDEEJ';
$s = preg_replace('~(?<=.)[^-]~', ' $0', $s);

peta:
To nebude fungovat.
Hlelep
Profil *
Díky moc


A ještě bych se chtěl optat, existuje univerzální způsob na odstranění všech bílých znaků? Našel jsem jen trim, ale ten neodstraní vše a pak přes preg replace, ale i tak mi například tohle nechá mezírku. Potřebuji se prostě zbavit úplně všech mezer (abych mohl praktikovat kód, který jste mi poradili výše). A jde o to, že někdy tam je mezera, někdy tabulátor a tak..

$s = "?    2    3    2-    1    1-    3-    2    1    1    X    N
J    C    G    C    A    H    H    F    B    A    D    E";
$s = trim($s);
$s = str_replace("    ","",$s);
$s = str_replace(" ","",$s);
echo $s;
Hlelep
Profil *
Ještě jsem zkoušel něco hledat, ale bezvýsledně
juriad
Profil
Všechny tři řádky můžeš nahradit za:
$s = preg_replace('/\s/', '', $s);
\s má význam any whitespace character
peta
Profil
pripadne tam muzes dat plusko nahradit opakovani mezery za jedinou
$str = preg_replace('~\s+~', ' ', $str);
Hlelep
Profil *
Díky moc

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: