Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] [klasa] AlphaStreamCutter - automatyczny łamacz linii, Lekarstwo na problem rozjeżdżających się stron ?
SoofMan
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 15.04.2007
Skąd: klikash ? A stond, z tamtond, ze wszond

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


(Użyłem wyszukiwarki i widzę że nie było takiego tematu, ale mogę się mylić. Jak było coś podobnego, to temat można skasować)

Witam,

Nudziło mi się ostatnio i oprócz gry w Heroes 3, którego jestem maniakiem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) postanowiłem też napisać na bazie algorytmu PHP Compactera - automatyczny obcinacz/łamacz za długich linii tekstu.

Przyszło mi to do głowy, bo zauważyłem że na wielu forach są straszne problemy z linkami które potrafią totalnie rozjechać całą stronę. Jak widzę, na tym forum problem jest już rozwiązany.

Klasa przetwarza i łamie dowolny STRING analizując go bajt po bajcie - tak jak to robił PHP Compacter, z tym że obsługuje Czysty Text, HTML oraz BBCode.

Pobrać można jak zawsze stąd:

http://hypercacher.com/download_pl.html



Przykładowe wywołania do przerabiania poszczególnych typów textu:

Przerabianie zwykłego tekstu:

  1. <?php
  2. $stream = file_get_contents('Text_zwykly.txt');
  3. $ct1 = new AlphaStreamCutter(0, 0, 40);
  4. $output = $ct1->CompactTextStream($stream);
  5. ?>


Przerabianie kodu HTML:

  1. <?php
  2. $stream = file_get_contents('Test001.html');
  3. $ct1 = new AlphaStreamCutter(1, 0, 40);
  4. $output = $ct1->CompactTextStream($stream);
  5. ?>


Przerabianie Text+BBCode:

  1. <?php
  2. $stream = file_get_contents('text_z_BBcode.txt');
  3. $ct1 = new AlphaStreamCutter(2, 0, 40);
  4. $output = $ct1->CompactTextStream($stream);
  5. ?>



Gdzie parametr o wartości 40 - to maksymalna długość ciągu.


Początek klasy wygląda tak:
  1. <?php
  2. class AlphaStreamCutter {
  3.  
  4. //This are the acceptable BBCode tags. Warning !!: They must be uppercase. Put you
    r custom BBCode tags in here to be recognized by this script
  5. var $arrBBCodeTagsList = array('URL', 'QUOTE', 'IMG', 'CODE', 'SIZE', 'COLOR');
  6.  
  7. //This regulates if the input string should be treated as HTML
  8. var $intInputTextFormat = false;
  9.  
  10. //This sets the string that will be used as line break
  11. var $strOutputLineBreakString = "n"; 
  12.  
  13. //How many characters can there be in one line before it is broken
  14. var $intMaxCharactersInLine = 80;
  15. ?>


Ten post edytował SoofMan 24.07.2007, 10:38:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jakoś nigdy nie miałem z tym problemu. Jeśli muszę obciąć jakiś tekst z tagami HTML to je wpierw usuwam. A dlaczego? Ano dlatego, że jeśli wytnę wszystko po setnym znaku i okaże się że wyciąłem zamknięcie tabeli, będzie jeszcze gorzej.
Go to the top of the page
+Quote Post
SoofMan
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 15.04.2007
Skąd: klikash ? A stond, z tamtond, ze wszond

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


Cytat(batman @ 22.07.2007, 21:44:58 ) *
Jakoś nigdy nie miałem z tym problemu. Jeśli muszę obciąć jakiś tekst z tagami HTML to je wpierw usuwam. A dlaczego? Ano dlatego, że jeśli wytnę wszystko po setnym znaku i okaże się że wyciąłem zamknięcie tabeli, będzie jeszcze gorzej.


Wiesz.... tutaj akurat chodzi o wstawianie tekstu do forum lub systemu komentarzy. Taki tekst ma często atrybuty - takie jak dodatkowe kolory, pogrubienie, ukośny tekst które realizowane są w HTMLu/BBCode.

Tam nie masz wyjścia - jak masz tekst z BBCode to musisz go wstawić razem z BBCode. A jeżeli BBCode przerabiasz najpierw na HTML, to i tak ten HTML musisz wstawić do bazy.

A jeżeli wstawiasz HTML do bazy i wstawisz NIEPORAWNY, to już zostanie niepoprawny i przy jego wyświetlaniu strona będzie się rozjeżdżać...

Ten post edytował SoofMan 22.07.2007, 21:13:32
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 07:46