Autor Zpráva
nethor
Profil
Ahoj,
mám fci , která má zabránit zalomení předložek (resp. slov která mají 3 a méně znaků) na konci řádku.
$text = preg_replace("#( | |\t)+(.{1,3})( |\t)+#i", "$1$2 ", $text);

např: text 'na šotolině a na sněhu'
vy měl vrátit 'na šotolině a na sněhu'
ale vrací 'na šotolině a na sněhu'

Jak se dá zapnout cyklení? (myslel jsem, že je defaultně zapnuté $limit = -1 )
tiso
Profil
nethor:
$text = preg_replace("#(\w{1,3})(\s)+#i", "$1 ", $text);
…a by měl vrátit 'na šotolině a na sněhu'
nethor
Profil
To mi nechodí s utf-8 .
Tvrdou mezeru za první přeložkou bych oželel, prakticky to nikdy nevadí.
Problém řeší dát příkaz 2x za sebou.
$text = preg_replace("#( | |\t)+(.{1,3})( |\t)+#i", "$1$2 ", $text);
$text = preg_replace("#( | |\t)+(.{1,3})( |\t)+#i", "$1$2 ", $text);


Ale určitě to jde vyřešit lépe.
tiso
Profil
nethor: tak oprava:
$text = preg_replace("#(?:^|(?<=\s))(.{1,3})(\s)+#i", "$1&nbsp;", $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