Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] [klasa] AlphaStreamCutter - automatyczny łamacz linii, Lekarstwo na problem rozjeżdżających się stron ?
SoofMan
post 21.07.2007, 18:32:56
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 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


--------------------

Szybki, łatwy, prosty i przyjemny dopalacz do stronek w PHP:
http://www.hypercacher.com
Enjoy.
Go to the top of the page
+Quote Post
Zajec
post 21.07.2007, 20:19:36
Post #2





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

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


Jeśli klasa ma być wygodna w używaniu, to jako pierwszy argument podawałbym stringa, a nie liczbę. Mało to przyjemne, pamiętać jaka liczba oznacza tekst, jaka HTML, a jaka BBCODE.

Inna sprawa, że klasa jest *chyba* dość mało przydatna? Znakomita większość tekstu umieszczanego na stronach nie jest pisana fontem o stałej szerokości znaków. Natomiast gdy już taki font jest używany, to zazwyczaj do zapisania kodu programu/strony, który lepiej wygląda gdy nie jest łamany.

P.S.
Polecam Wesnoth ;-) Uwaga, gra portafi wciągnąć :-)
Go to the top of the page
+Quote Post
batman
post 22.07.2007, 19:57:28
Post #3





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




Szczerze przyznam, że nie widzę sensu tworzenia takiej klasy. Jeśli jakiś string jest za długi, to obcinam go przy pomocy substr lub mb_substr. A jeśli nie chcę obcinać, tylko zawinąć to używam wordwrap.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
SoofMan
post 22.07.2007, 20:38:03
Post #4





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, 20:57:28 ) *
Szczerze przyznam, że nie widzę sensu tworzenia takiej klasy. Jeśli jakiś string jest za długi, to obcinam go przy pomocy substr lub mb_substr. A jeśli nie chcę obcinać, tylko zawinąć to używam wordwrap.


Ale nie przewidziałeś że jak utniesz TAG html albo BBCode w połowie, to cały kod ci się rozleci i efekt końcowy będzie różny od zamierzonego...

Ta klasa obcina text i dodatkowo przy tym uważa żeby nie popsuć tagów.


--------------------

Szybki, łatwy, prosty i przyjemny dopalacz do stronek w PHP:
http://www.hypercacher.com
Enjoy.
Go to the top of the page
+Quote Post
batman
post 22.07.2007, 20:44:58
Post #5





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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
SoofMan
post 22.07.2007, 21:11:45
Post #6





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


--------------------

Szybki, łatwy, prosty i przyjemny dopalacz do stronek w PHP:
http://www.hypercacher.com
Enjoy.
Go to the top of the page
+Quote Post
batman
post 23.07.2007, 07:27:40
Post #7





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




Cytat
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ć...

Zgadza się. Jednak chodzi mi o to, że gdy wstawiam do bazy jakiś komentarz, to wstawiam wszystko, a nie obcinam do iluś znaków. Tekst się obcina po to, by wyświetlić fragment wiadomości w mailu, kanale rss lub na liście wiadomości. I jeśli w tym miejscu usuniesz zamknięcie tabeli, listy lub innego elementu html, wówczas wszystko się rozjedzie. I dlatego w takich miejscach usuwam znaki html, a do zabawy z ciągiem używam funkcji, które wymieniłem w pierwszym poście.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
SoofMan
post 23.07.2007, 15:49:35
Post #8





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 @ 23.07.2007, 08:27:40 ) *
Zgadza się. Jednak chodzi mi o to, że gdy wstawiam do bazy jakiś komentarz, to wstawiam wszystko, a nie obcinam do iluś znaków. Tekst się obcina po to, by wyświetlić fragment wiadomości w mailu, kanale rss lub na liście wiadomości. I jeśli w tym miejscu usuniesz zamknięcie tabeli, listy lub innego elementu html, wówczas wszystko się rozjedzie. I dlatego w takich miejscach usuwam znaki html, a do zabawy z ciągiem używam funkcji, które wymieniłem w pierwszym poście.


Tak też można. To jedno z możliwych rozwiązań problemu.

Ale jeżeli chcesz mieć w bazie HTML/BBCode to wtedy taki skrypt/klasa jest potrzebny(a).


--------------------

Szybki, łatwy, prosty i przyjemny dopalacz do stronek w PHP:
http://www.hypercacher.com
Enjoy.
Go to the top of the page
+Quote Post
batman
post 23.07.2007, 19:20:12
Post #9





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




Mam w bazie HTML i nie używałem do tego tej klasy.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
SoofMan
post 23.07.2007, 19:22:28
Post #10





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 @ 23.07.2007, 20:20:12 ) *
Mam w bazie HTML i nie używałem do tego tej klasy.


biggrin.gif

Przecież nikt cię nie zmusza, spokojnie - luz winksmiley.jpg


--------------------

Szybki, łatwy, prosty i przyjemny dopalacz do stronek w PHP:
http://www.hypercacher.com
Enjoy.
Go to the top of the page
+Quote Post
batman
post 23.07.2007, 19:32:54
Post #11





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




W każdym bądź razie poznaliśmy swoje zdania na temat tej klasy. Niech inni też oceniają. winksmiley.jpg


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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: 19.04.2024 - 17:23