Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Mały bbcode
piotr485
post 11.01.2010, 16:12:02
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


Witam napisałem coś takiego:
  1. $wywalanie_znakow = str_replace("\n", "<br />", $wywalanie_znakow);
  2. $wywalanie_znakow = str_replace("\n\n", "<br /><br />", $wywalanie_znakow);


Ale niestety nie działa tak jak powinno - chciałbym aby jeden \n było jako <br />, dwa \n\n było jako <br /><br /> i wszystkie wiecej niz 2 \n\n tez byly zawsze dwa <br /><br />

Tylko nie wiem jak to napisac, zapewne przy pomocy preg_replace wyrazen regularnych, ale nie mam pojecia jak to rozgryzc - te wyrazenia za kazdym razem dla mnie czarna magia.
Pomoże ktos? Proszę!

Jaką komendą mogę sprawdzic jak wyglada moj kod zapisany w bazie tak aby wyswietlilo sie rowniez \n \r ?

Ten post edytował piotr485 12.01.2010, 09:59:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
piotrooo89
post 11.01.2010, 16:29:00
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zrób sobie tablice z tych wartości.

  1. $wywalanie_znakow = str_replace(array("\n", "\n\n"), array("<br />", "<br /><br />"), wywalanie_znakow);


--------------------
Go to the top of the page
+Quote Post
piotr485
post 11.01.2010, 16:39:35
Post #3





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


  1. $wywalanie_znakow = str_replace(array("\n", "\n\n", "\n\n\n", "\n\n\n\n"), array("<br />", "<br /><br />", "<br /><br />", "<br /><br />"), $wywalanie_znakow);


To co piszesz nie działa sad.gif
Go to the top of the page
+Quote Post
piotrooo89
post 11.01.2010, 16:50:45
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale co Ci nie działa? co chcesz osiągnąć?


--------------------
Go to the top of the page
+Quote Post
piotr485
post 11.01.2010, 17:00:19
Post #5





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


Jeśli w zmiennej wystepuje \n to zamienic to na <br />
jesli wystepuje podwojnie kolo siebie (\n\n)to zamienic na <br /><br />
jesli wystepuje potrojnie to zamienic na <br /><br />
jesli wystepuje poczwornie kolo siebie "\n\n\n\n" to zamienic na <br /><br />

czyli gdy wystepuje kolo siebie dwa lub wiecej razy to zamienic na dwa br (<br /><br />)


Go to the top of the page
+Quote Post
Mephistofeles
post 11.01.2010, 17:25:18
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Zamień kolejność, pewnie nie ma już \n\n bo jest <br>\n.
Go to the top of the page
+Quote Post
piotr485
post 11.01.2010, 17:44:32
Post #7





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


zrobiłem tak:

  1. $wywalanie_znakow_o_nas = str_replace("\n\n\n\n\n", "<br /><br />", $wywalanie_znakow_o_nas);
  2. $wywalanie_znakow_o_nas = str_replace("\n\n\n\n", "<br /><br />", $wywalanie_znakow_o_nas);
  3. $wywalanie_znakow_o_nas = str_replace("\n\n\n", "<br /><br />", $wywalanie_znakow_o_nas);
  4. $wywalanie_znakow_o_nas = str_replace("\n\n", "<br /><br />", $wywalanie_znakow_o_nas);
  5. $wywalanie_znakow_o_nas = str_replace("\n", "<br />", $wywalanie_znakow_o_nas);


Ale to nic nie daje i tak niedziała

  1. $wywalanie_znakow_o_nas = str_replace(array("\n\n\n", "\n\n", "\n"), array("<br /><br />", "<br /><br />", "<br />"), $wywalanie_znakow_o_nas);


jak jest \n\n\n to wg tego zamieni mi na <br /><br /> a potem \n zamieni na <br /> i w rezultacie znowu otrzymam trzy BR

Po za tym co jesli ktos uzyje 100 nowych linii - mam sto linijek kodu napisac zeby to zrobic ? choc i tak ten sposob nie dziala... nie mam glowy
Go to the top of the page
+Quote Post
no_face
post 11.01.2010, 20:01:56
Post #8





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

Ostrzeżenie: (0%)
-----


Panowie.

  1. $a= preg_replace(array("/\n{3,}/", "/\n\n/", "/\n/"), array('<br /><br />', '<br /><br />', '<br />'), $a);


do tego uczulenie na '\r\n', '\n' itd.

Ten post edytował no_face 11.01.2010, 20:11:09
Go to the top of the page
+Quote Post
piotr485
post 11.01.2010, 21:43:04
Post #9





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


Niestety również niedziała. Już po mału tracę nadzieję na możliwosc rozwiązania tego problemu
Go to the top of the page
+Quote Post
darko
post 11.01.2010, 21:49:11
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To może tak:
  1. $s = "\n\n\ntest\n";
  2. $s = preg_replace(array("/\n{2,1000}/", "/\n{1}/"), array("<br/><br/>", "<br/>"), $s);
  3. echo $s;

?

Ten post edytował darko 11.01.2010, 22:09:48


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
no_face
post 11.01.2010, 22:55:44
Post #11





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

Ostrzeżenie: (0%)
-----


Choc nie testowalem przykladu, dzialac powinien, byc moze problemem jest zrodlo danych wejsciowych. Jezeli wykonujesz to po przez formularz pod przewodnictwem windowsa powinno wystarczyc "\n", jezeli testujesz na pliku gdzie zmienna tekstowa jest zapisana w postaci wielolinijkowej zastosuj "\r\n".

PS Okresl w jaki sposob testujesz nasze rozwiazania.
Go to the top of the page
+Quote Post
Misiek92
post 11.01.2010, 23:16:21
Post #12





Grupa: Zarejestrowani
Postów: 24
Pomógł: 1
Dołączył: 19.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie lepiej nl2br() - http://pl.php.net/manual/pl/function.nl2br.php ?
Go to the top of the page
+Quote Post
darko
post 11.01.2010, 23:21:56
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Misiek92 @ 11.01.2010, 23:16:21 ) *

Nie, ponieważ wtedy każdy znak nowej linii ("\n") zostanie zastąpiony "<br/>", a nie o to chodzi.

Ostatecznie powinno być coś takiego:

  1. $s = "\n\n\ntest\n";
  2. $ile = substr_count($s, "\n");
  3. $s = preg_replace(array("/\n{2,$ile}/", "/\n{1}/"), array("<br/><br/>", "<br/>"), $s);
  4. echo $s;


Ten post edytował darko 11.01.2010, 23:26:39


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotr485
post 12.01.2010, 08:03:51
Post #14





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


Dlaczego mi to nie działa ?

  1. $s = "\n\r\n\r\n\r\n\r\n\rtest\n\r";
  2. $s = preg_replace(array('/\n\r{2,1000}/', "/\n\r{1}/"), array("<br/><br/>", "<br/>"), $s);
  3. echo $s;


Wyświetla się <br /><br /><br /><br /><br />test<br />

Ten post edytował piotr485 12.01.2010, 10:10:59
Go to the top of the page
+Quote Post
no_face
post 12.01.2010, 21:56:06
Post #15





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

Ostrzeżenie: (0%)
-----


Jak juz to \r\n

a nie dziala poprawnie gdyz wielokrotnosc odwoluje sie do samego \r a nie Twojego \n\r

  1. $s = "\r\n\r\n\r\n\r\ntest\r\ntestw\r\n\r\n\r\n\r\ntest3";
  2. $s = preg_replace(array('/(\r\n){2,1000}/', "/(\r\n){1}/"), array("<br/><br/>", "<br/>"), $s);

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:21