Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie wielokrotnych znaków nowej linii ( br lub \r\n )
Forum PHP.pl > Forum > Przedszkole
gaza
Jak usunąć wielokrotnie występujące znaki nowej linii \r\n ( lub <br> ), tak aby zostawić tylko jeden taki znak ?
Chodzi o to, że mam tekst który ma po kilka br-eaków i tworzą się niepotrzebne odstępy. Nowa linia ma pozostać ale tylko jedna.

Dodatkowo chciałbym z tekstu usunąć kod podobny do JS.
Np. coś takiego

[JAVASCRIPT] pobierz, plaintext
  1. if (typeof cos != 'undefined') {
  2. cos.render(1234); // Format : rectangle 100x50
  3. }
[JAVASCRIPT] pobierz, plaintext



Pozdrawiam
webdice
1.

  1. $str = str_replace( "\r\n\r\n", "\r\n", $str );


Analogicznie dla znacznika br.

2. Nie rozumiem o co Ci chodzi.

P.S. Kod proszę wklejać w odpowiednich tagach.
gaza

nad wykorzystaniem str_replace już się wcześniej zastanawiałem.
Chyba niedostatecznie jasno przedstawiłem problem.
Pobieram stronę, następnie przepuszczam ją przez Zend_Dom_Query i w konsekwencji otrzymuje tekst.
W tym tekście często znajduje się po kilka znaków nowej linii koło siebie. Chciałbym te kilka znaków ( niekoniecznie 2 ) zamienić tylko na jeden. Dzięki czemu będę miał w miare zachowane formatowanie.
Druga sprawa, to to, że otrzymuje w tym tekście podobne wpisy jak ten w poście powyżej. Tekst ten nie jest już otoczony żadnymi znacznikami sugerującymi, ze jest to jakiś kod skryptu.
Chciałbym to w jakiś sposób wyciąć. Być może już zend_dom daje mi taką możliwość, ale nie udało mi się tego potwierdzić. A być może trzeba zastosować jakaś swoja funkcje która np rozpoznaje słowo "IF" i wycina wszytko do znalezienia zamykającego nawiasu klamrowego. Wiem, ze niekoniecznie kod skryptu musi się zaczynać od IF, dlatego funkcja taka musi to uwzględniać. Nie wykluczone, ze jest gdzieś w PHP gotowa taka funkcja, ale niestety nie udało mi się jej znaleźć.
uff, może teraz już będzie trochę jaśniej smile.gif
Crozin
Z tej biblioteki Zenda nigdy nie korzystałem, ale po prostu usuń wszystkie znaczniki <script> ze źródła przed poddaniem go obróbce.

Co do nowych linii:
  1. $text = '...';
  2.  
  3. // Wszystkie znaczniki nowej linii (<br>, <br/>, <br />) zamieniamy na znak nowej linii
  4. $text = preg_replace('/<br\s*\/?>/', PHP_EOL, $text);
  5.  
  6. // Jeden lub więcej znaków nowej linii (niezależnie od platformy) zamieniamy na dokładnie jeden znak nowej linii
  7. $text = preg_replace("/[\r\n]+/", PHP_EOL, $text);
gaza
Dzięki Crozin
Zrobiłem tak jak poradziłeś i wszystko działa jak należy.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.