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 085
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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: 25.01.2021 - 04:44