Autor | Zpráva | ||
---|---|---|---|
sacrebleu Profil * |
#1 · Zasláno: 13. 2. 2011, 16:03:54
Ahoj, prosím poraďte mi, potřebuju nahradit \n konec řádku, vedle něho se však již nesmí vyskytovat žádný konec řádku ani zleva ani zprava - zkoušel jsem:
$text = preg_replace("(\[^\\n]\\n(.+?)[^\\n])", " $1", $text); Ale prostě nevím co kde píšu špatně, hledal jsem všude možně, prosím poradíte mi někdo? Děkuji |
||
Johnik Profil |
#2 · Zasláno: 13. 2. 2011, 17:32:25
Je potřeba definovat multiline.
|
||
sacrebleu Profil * |
#3 · Zasláno: 13. 2. 2011, 19:30:19
Moc nevím co to je... ^ a tohle $ ?
|
||
lordfrikk Profil |
#4 · Zasláno: 14. 2. 2011, 16:55:47
Chápu to správně tak, že chceš mít pouze jedno zalomení za sebou (tj. ne třeba 3 zalomení = prázdné řádky)? Pokud ano, něco takového by stačilo?
<?php $text = 'bla bla'; $text = preg_replace("/(?:\n|\r\n?){2,}/", PHP_EOL, $text); echo nl2br($text); /* vysledek je: bla<br /> bla */ ?> |
||
sacrebleu Profil * |
#5 · Zasláno: 15. 2. 2011, 15:43:00
Ne, chtěl bych když budu mít řetězec:
Blabla Ahoj Nazdar! Aby se nahradil konec řádku co je mezi Blabla a Ahoj mezerou a žádný jiný... |
||
imploder Profil |
#6 · Zasláno: 15. 2. 2011, 16:57:06 · Upravil/a: imploder
<?php // text na víc řádků $text1 = 'Blabla Ahoj Nazdar! '; // modifikátor "m" způsobí, že výraz není omezený jen na 1 řádek $text2 = preg_replace('/(?<=[^\n])\n(?=[^\n])/m', ' ', $text1); // výpis: osamocené konce řádků se přeměnily na mezery header('Content-Type: text/plain; charset=utf-8'); echo "původní text: \"$text1\"\n"; echo "nový text: \"$text2\"\n"; ?> |
||
sacrebleu Profil * |
#7 · Zasláno: 15. 2. 2011, 17:15:54
Díky, funguje super! Já sem zatím zplichtil tohle
$text = preg_replace("/(.+?)(\\n){1}(.+?)/", '$1'.' '.'$3' , $text); Taky to funguje jak má, ale čas scriptu je o mnoho delší... proč? O:-) |
||
sacrebleu Profil * |
#8 · Zasláno: 15. 2. 2011, 17:17:52
Jo a ještě jedna trapná otázka - ty zpětná lomítka se už escapovat nemusí? Myslím tím třeba \n za \\n?
|
||
imploder Profil |
#9 · Zasláno: 15. 2. 2011, 18:01:13
sacrebleu:
„Taky to funguje jak má, ale čas scriptu je o mnoho delší... proč? O:-)“ Asi proto, že je to o dost složitější a pracuje se ne s jedním znakem, ale s velkými kusy řětězce ($1 a $3). Bylo by potřeba zjistit, jak přesně vyhodnocování toho výrazu probíhá. Obecně je určitě dobré se držet co nejjednodušších výrazů. „Jo a ještě jedna trapná otázka - ty zpětná lomítka se už escapovat nemusí? Myslím tím třeba \n za \\n?“ Nemusí, protože je to v apostrofech. Escapovat lomítkem se dá jenom v řetězcích zapsaných v uvozovkách. |
||
sacrebleu Profil |
#10 · Zasláno: 15. 2. 2011, 20:17:03
Díky, moc mi to pomohlo!
|
||
sacrebleu Profil |
#11 · Zasláno: 15. 2. 2011, 21:20:48
Zde je to k čemu jsem to potřeboval... kdo chce, může třeba využít, nebo poradit jak to zjednodušit...
|
||
Časová prodleva: 13 let
|
0