Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa] Zaawansowany parser bbcode (php5)
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Stron: 1, 2, 3, 4, 5
wookieb
Problem poprawiony i nowa paczka jest na serwerze. Plik BbCode.class.php do zmiany
redelek
Witam,

Ostatnio kolega @wookieb podał mi kod do swojej klasy bbcode.
Wszystko działa prawie super smile.gif Chodzi o wprowadzenie kolorowania w geshi
Zrobiłem to tak
  1. <?php
  2.  
  3. include_once('Bbcode/BbCode.class.php');
  4. $bb=new BbCode();
  5. $text='POGROBIONE
  6.  
  7. /*oczywiście tu wpisuję znacznki [php] tylko na forum się to rozwal*/
  8. if ($ddd == "aaa") {
  9. echo "bbb";
  10. }
  11. /*
a tu go zamykam*/
';
echo '<fieldset class="pre"><legend>Oryginalny tekst</legend>'.$text.'</fieldset>';
$bb->parse($text, false);
echo '<fieldset><legend>Po BBC</legend'.$bb->getHtml().'</fieldset>';


?>[/php]

Znalazłem w klasie code.php odblokowanie funkcji GESHI. Niestety pomimo usilnych starań nie koloruje mi składni sad.gif
Czy może ktoś mi pomoc ?

Dzięki
wookieb
Było
http://forum.php.pl/index.php?act=findpost...&pid=684713

Następnym razem poruszaj takie sprawy w temacie dotyczącym tego skryptu bo robi się bałagan na forum
// EDIT: Dziękuję za połączenie tematów smile.gif
redelek
oki tego nie widziałem

Ale jak zrobiłem zmiany z code.php
  1. <?php
  2.  
  3. /**
  4.  * Tag CODE
  5.  * @package Parser
  6.  * @subpackage Filters
  7.  * @author wookieb
  8.  * @version 1.1
  9.  */
  10. class BbCodeFilterCode
  11. {
  12. public $tags=array(
  13. 'code'=>array(
  14. 'open'=>'div class="code_wrapper"',
  15. 'close'=>'div',
  16. 'notallowed_child'=>'all',
  17. 'leave_notallowed_child'=>1,
  18. 'leave_notallowed_parent'=>1,
  19. 'parse_body'=>'parseCode'
  20. )
  21. );
  22.  
  23. /**
  24. * Parsuje tag CODE
  25. * @param array $tag
  26. * @param array $openNode
  27. * @param array $body
  28. * @param array $closeNode
  29. */
  30. /*public function parseCode($tag, &$openNode, &$body, &$closeNode)
  31. {
  32. // tutaj mozemy dodać geshi czy to tez sie podoba
  33. $openNode['text'].='<div class="code_title">Kod</div><div class="code_area">';
  34. $closeNode['text']='</div>'.$closeNode['text'];
  35.  
  36. }
  37.  
  38. */
  39. /**
  40. * Parsuje tag CODE używając GESHI
  41. * @param array $tag
  42. * @param array $openNode
  43. * @param array $body
  44. * @param array $closeNode
  45. */
  46.  
  47. public $tag=array(
  48. 'php'=>array(
  49. 'open'=>'div class="code_wrapper"',
  50. 'close'=>'div',
  51. 'notallowed_child'=>'all',
  52. 'leave_notallowed_child'=>1,
  53. 'leave_notallowed_parent'=>1,
  54. 'parse_body'=>'parsePHP'
  55. ),
  56. 'code'=>array(
  57. 'open'=>'div class="code_wrapper"',
  58. 'close'=>'div',
  59. 'notallowed_child'=>'all',
  60. 'leave_notallowed_child'=>1,
  61. 'leave_notallowed_parent'=>1,
  62. 'parse_body'=>'parseCode'
  63. )
  64. );
  65.  
  66. public function parsePhp($tag, &$openNode, &$body, &$closeNode)
  67. {
  68. $language = 'php';
  69. $this->parseCode($tag, $openNode, $body, $closeNode, 'php');
  70. }
  71.  
  72.  
  73. public function parseCode($tag, &$openNode, &$body, &$closeNode, $language = 'default')
  74. {
  75. // laczymy tresc w całość
  76.  
  77. $content = '';
  78. foreach($body as $key => &$node)
  79. {
  80. $content.= $node['text'];
  81. $node['text'] = '';
  82.  
  83. // usuwamy zbedne elementy
  84. if($key!=0) unset($body[$key]);
  85. }
  86.  
  87. require_once 'class.geshi.php';
  88.  
  89.  
  90. $geshi = new GeSHi($content, $language);
  91. $body[0]['tagText'] = $content;
  92. $body[0]['text'] = $geshi->parseCode();
  93. $body[0]['nohtmlspecialchars'] = 1;
  94.  
  95. $openNode['text'].='<div class="code_title">Kod</div><div class="code_area">';
  96. $closeNode['text']='</div>'.$closeNode['text'];
  97. }
  98.  
  99.  
  100. }


To wywala mi taki błąd
Catchable fatal error: Object of class BbCodeSettings could not be converted to string in D:\www\TESTY-MODULOW\geshi_testy\geshi\geshi.php on line 667

Przepraszam, ale czarna magia dla mnie. Chodzi mi o to że jak w tekscie znajdzie [code lanh='php'] [/code] to pokoloruje to.

wookieb
A no tak bo zmienił się parser
  1. public function parseCode($tag, &$openNode, &$body, &$closeNode, $settings, $language = 'default')

Oraz
  1.  
  2. public function parsePhp($tag, &$openNode, &$body, &$closeNode, $settings)
  3. {
  4. $language = 'php';
  5. $this->parseCode($tag, $openNode, $body, $closeNode, $settings, 'php');
  6. }

Powinno być ok

Jeżeli chcesz obsłużyć parametr lang to czytaj readme no i przejrzyj w funkcji zawartość zmiennej $openNode
  1. print_r($openNode);

Żebyś wiedział, skąd wyciągnać wartość atrybutu
redelek
Poprawiłem i teraz mi wyświetla
Fatal error: Call to undefined method GeSHi::parseCode() in D:\www\TESTY-MODULOW\geshi_testy\Bbcode\Filters\Code.php on line 94

a ta linijka to
  1. $body[0]['text'] = $geshi->parseCode();


wookieb
To w takim razie sprawdź jaka funkcja przeparsuje code w geshi, bo juz nie pamietam, może miałem inna wersje. Ale generalnie wiesz o co chodzi.
redelek
Witam,

Już doszedłem prawie gdzie był problem. W Geshi zostało zmienione parseCode() na parse_code() i już działa to znaczy nie wyświetla błędu.
Niestety kod nie jest pokolorowany jest wyświetlony jako default
Code.php
  1. <?php
  2.  
  3. /**
  4.  * Tag CODE
  5.  * @package Parser
  6.  * @subpackage Filters
  7.  * @author wookieb
  8.  * @version 1.1
  9.  */
  10. class BbCodeFilterCode
  11. {
  12. public $tags=array(
  13. 'code'=>array(
  14. 'open'=>'div class="code_wrapper"',
  15. 'close'=>'div',
  16. 'notallowed_child'=>'all',
  17. 'leave_notallowed_child'=>1,
  18. 'leave_notallowed_parent'=>1,
  19. 'parse_body'=>'parseCode'
  20. )
  21. );
  22.  
  23. /**
  24. * Parsuje tag CODE
  25. * @param array $tag
  26. * @param array $openNode
  27. * @param array $body
  28. * @param array $closeNode
  29. */
  30. /*public function parseCode($tag, &$openNode, &$body, &$closeNode)
  31. {
  32. // tutaj mozemy dodać geshi czy to tez sie podoba
  33. $openNode['text'].='<div class="code_title">Kod</div><div class="code_area">';
  34. $closeNode['text']='</div>'.$closeNode['text'];
  35.  
  36. }
  37.  
  38. */
  39. /**
  40. * Parsuje tag CODE używając GESHI
  41. * @param array $tag
  42. * @param array $openNode
  43. * @param array $body
  44. * @param array $closeNode
  45. */
  46.  
  47. public $tag=array(
  48. 'php'=>array(
  49. 'open'=>'div class="code_wrapper"',
  50. 'close'=>'div',
  51. 'notallowed_child'=>'all',
  52. 'leave_notallowed_child'=>1,
  53. 'leave_notallowed_parent'=>1,
  54. 'parse_body'=>'parsePHP'
  55. ),
  56. 'code'=>array(
  57. 'open'=>'div class="code_wrapper"',
  58. 'close'=>'div',
  59. 'notallowed_child'=>'all',
  60. 'leave_notallowed_child'=>1,
  61. 'leave_notallowed_parent'=>1,
  62. 'parse_body'=>'parseCode'
  63. )
  64. );
  65.  
  66. public function parsePhp($tag, &$openNode, &$body, &$closeNode, $settings)
  67. {
  68. $language = 'php';
  69. $this->parseCode($tag, $openNode, $body, $closeNode, $settings, 'php');
  70. }
  71.  
  72.  
  73.  
  74. public function parseCode($tag, &$openNode, &$body, &$closeNode, $settings, $language = 'default')
  75.  
  76. {
  77. // laczymy tresc w całość
  78. print_r($openNode);
  79. $content = '';
  80. foreach($body as $key => &$node)
  81. {
  82. $content.= $node['text'];
  83. $node['text'] = '';
  84.  
  85. // usuwamy zbedne elementy
  86. if($key!=0) unset($body[$key]);
  87. }
  88.  
  89. require_once 'geshi/geshi.php';
  90.  
  91.  
  92. $geshi = new GeSHi($content, $language);
  93. $body[0]['tagText'] = $content;
  94. $body[0]['text'] = $geshi->parse_code();
  95. $body[0]['nohtmlspecialchars'] = 1;
  96.  
  97. $openNode['text'].='<div class="code_title">Kod</div><div class="code_area">';
  98. $closeNode['text']='</div>'.$closeNode['text'];
  99.  
  100.  
  101. }
  102.  
  103.  
  104. }


i zniknieła zmienna użyta w przykładowym skrypcie php
  1. <?php
  2.  
  3. include_once('Bbcode/BbCode.class.php');
  4. $bb=new BbCode();
  5.  
  6.  
  7. $text="POGROBIONE
  8. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--> if ( $ddd == 'aaa') {
  9.     echo 'pupa';
  10.     }<!--c2--></div><!--ec2-->";
  11. echo '<fieldset class="pre"><legend>Oryginalny tekst</legend>'.$text.'</fieldset>';
  12. $bb->parse($text, false);
  13. echo '<fieldset><legend>Po BBC</legend'.$bb->getHtml().'</fieldset>';
  14.  
  15.  
  16. ?>


Mogę prosić o pomoc lub naprowadzenie ?
wookieb
A gdzie ty masz tag "code" uzyty?
Poza tym pisałem, przeczytaj readme.html jak się dodaje parametry do tagów
redelek
to forum wycieło znaczniki code.
Kurcze no mam te tagi dopisane

  1. public $tag=array(
  2. 'php'=>array(
  3. 'open'=>'div class="code_wrapper"',
  4. 'close'=>'div',
  5. 'notallowed_child'=>'all',
  6. 'leave_notallowed_child'=>1,
  7. 'leave_notallowed_parent'=>1,
  8. 'parse_body'=>'parsePhp'
  9. ),
  10. 'code'=>array(
  11. 'open'=>'div class="code_wrapper"',
  12. 'close'=>'div',
  13. 'notallowed_child'=>'all',
  14. 'leave_notallowed_child'=>1,
  15. 'leave_notallowed_parent'=>1,
  16. 'parse_body'=>'parseCode'
  17. )
  18. );
wookieb
Przecież cały czas mówię o dodaniu atrybutu LANG do tagu CODE.
redelek
Dodałem atrybut
  1. public $tag=array(
  2. 'php'=>array(
  3. 'open'=>'div class="code_wrapper"',
  4. 'close'=>'div',
  5. 'notallowed_child'=>'all',
  6. 'leave_notallowed_child'=>1,
  7. 'leave_notallowed_parent'=>1,
  8. 'parse_body'=>'parsePhp'
  9. ),
  10. 'code'=>array(
  11. 'open'=>'div class="code_wrapper"',
  12. 'close'=>'div',
  13. 'notallowed_child'=>'all',
  14. 'leave_notallowed_child'=>1,
  15. 'leave_notallowed_parent'=>1,
  16. 'attributes'=>array('lang'=>array('attr'=>'lang')),
  17. 'parse_body'=>'parseCode'
  18. )
  19. );

i ndal nie koloruje sad.gif
w kodzie mam [code lang="php"]
wookieb
Przeczytaj jeszcze raz moje posty.
napisałem:
DODAJ ATRYBUT
+
SPRAWDŹ W KODZIE JAK TEN ATRYBUT PRZEKAZAĆ DO GESHI
redelek
A może mi Pan pomóc,

Kurcze nie jestem taki mocy w PHP i ślęczę nad tym od dwóch dni i nic ciekawego wymodzić nie mogę.
Tak kiepski jestem wiem. Amatorsko się tym zajmuję na potrzeby zabawy i wolnego czasu.
Proszę o wyrozumiałość, potrzebne mi jest to do moich skryptów z języka bash
GyniO
Mam jeszcze tylko 1 pytanie, w którym miejscu mogę zrobić parsowanie emotów? tzn ": )" na smile.gif ?

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

Ok, udało mi się podłączyć Geshi do Tego parsera, nie miałem żadnych większych problemów ;]

Ale mam pewien problem z wyświetlaniem tego, mianowicie na chrome wszystko działa:
http://gynio.pl/artykul/8-geshi-dodatek-do-parsera-BBcode/

A na Mozilli wywala błąd XML
  1. Błąd parsowania XML: niezdefiniowana jednostka
  2. Obszar: <a href="http://gynio.pl/artykul/8-geshi-dodatek-do-parsera-BBcode/" target="_blank">http://gynio.pl/artykul/8-geshi-dodatek-do-parsera-BBcode/</a>
  3. Numer linii: 77, kolumna 131:<div class="code_wrapper"><div class="code_title">Kod</div><div class="code_area"><pre class="php" style="font-family:monospace;">&nbsp;


Problem tkwi w  
  1. &nbsp;



Strona to mój "cms" z OPT.
Crozin
Masz, pokalało Cię za używanie twardych spacji do czegoś do czego nie zostały stworzone.

Ale żeby nie było: http://changelog.ca/log/2006/06/12/making_...ml_rss_and_atom
GyniO
Ok działa smile.gif

Parser
zamienia \t na 4x nbsp w pliku bbcode.class.php
athabus
Właśnie szukałem czegoś do parsowania bbcodu z możliwością dodania kilku niestandardowych znaczników i natrafiłem na Twoją fajną klasę. Na prawdę niezła robota. Z moich uwag to:
- nie wiem, czy dobrze widzę, ale czy niestandardowe tagi trzeba dopisać "na stałe" do klasy? Jeśli tak to fajnie byłoby dodać jakąś metodę pozwalającą na zmianę w locie - raz mogę potrzebować innego zestawu tagów a drugi raz innego. Fajnie aby takie rzeczy można było zmieniać w kodzie.
- zadeklarowałbym metody jak protected a nie private tak, aby w razie czego można było dziedziczyć po Twojej klasie - znów powód jak powyżej - czasami mogę potrzebować jakiś niestandardowych rozwiązań i zamiast przerabiać całą klasę mógłbym tylko dodać/zmienić pewne części

Najbardziej podoba mi się automatyczne "domykanie" tagów - wiele rozwiązań nie ma tego zaimplementowanego a jest to przydatna funkcja.

Ogólnie dobra robota - gratuluje.
wookieb
Cytat(athabus @ 2.07.2010, 14:32:07 ) *
- nie wiem, czy dobrze widzę, ale czy niestandardowe tagi trzeba dopisać "na stałe" do klasy? Jeśli tak to fajnie byłoby dodać jakąś metodę pozwalającą na zmianę w locie - raz mogę potrzebować innego zestawu tagów a drugi raz innego. Fajnie aby takie rzeczy można było zmieniać w kodzie.

To faktycznie mój błąd, że nie zadbałem o możliwośc stworzenia dynamicznych filtrów aczkolwiek klasa jest przygotowana pod szereg przeróżnych kombinacji filtrów, możliwość włączenie wyłączenia poszczególnych tagów (BbCodeSettings)

Cytat(athabus @ 2.07.2010, 14:32:07 ) *
- zadeklarowałbym metody jak protected a nie private tak, aby w razie czego można było dziedziczyć po Twojej klasie - znów powód jak powyżej - czasami mogę potrzebować jakiś niestandardowych rozwiązań i zamiast przerabiać całą klasę mógłbym tylko dodać/zmienić pewne części

Metod prywatnych używa się kiedy chcemy aby użytkownik nie mógł ich nadpisać i bezpośrednio używać z tego m.in względu aby nie zepsuł działania pewnego elementu. Tak więc uznałem, że większość metody parsujące powinny być prywatne, aczkolwiek faktycznie ładowanie filtrów może być chronione i zależne od użytkownika. Jak będę prowadził pracę nad modyfikacjami na pewno to zrobię smile.gif
Zajec
Potrzebuję wymienić parser BBCode i cieszę się że znalazłem coś porządnego smile.gif

Niestety pierwsza próba odpalenia sprawiła kilka kłopotów, otóż postanowiłem wrzucić klasę do odpowiedniego podkatalogu mojego systemu. Wtedy okazało się, że robiąc "require_once 'include/tools/parsers/BbCode.php" wszystko się sypie, ze względu na relatywność ścieżek.

Poprawiłem to prostym znanym trickiem z dirname i __FILE__. Dzielę się swoim patchem, fajnie gdybyś go włączy do swojego "mainline" smile.gif
http://files.zajec.net/bbcode.0001.patch.txt
wookieb
Wystarczy dodać katalog z BbCode do include_path snitch.gif
Zajec
Cytat(wookieb @ 3.03.2011, 22:11:02 ) *
Wystarczy dodać katalog z BbCode do include_path snitch.gif
Pewnie, tylko wyboraź sobie takie include_path ze wszystkimi projektami.
Kod
.;include/tools/parsers/BbCode/;include/tools/parsers/Wiki/;include/tools/PHPTAL/;include/tools/Sblam/
Ogłupiałbym tongue.gif

Poza tym nie chodzi mi o to, abym ja sobie z tym poradził. Uważam projekt za ciekawy i chciałem, aby każdemu nowemu jego użytkownikowi działało to out-of-box.
gorzat
witam, sciagnalem sobie to, ale nie bardzo wiem jak sie teraz do tego zabrac...
mam sobie strony index.php oraz dodaj.php, na tym samym poziomie folder bbcode.
no i co teraz musze zrobic, zebym w formularzu dodaj.php mogl sobie wpisac tekst i ubrac go w bbcode?
dodaje do plikow
  1. include_once('Bbcode/BbCode.class.php');
  2. $bb=new BbCode();


i co dalej? co mam zrobic, zebym mogl wpisac test i mi sie to w index.php wyswietlilo pogrubione?
poza tym wyskakuje mi blad
Kod
Warning: include_once(Bbcode/Filters/Youtube.php) [function.include-once]: failed to open stream: No such file or directory in E:\wamp\test\templates\bbcode\BbCode.class.php on line 264

Warning: include_once() [function.include]: Failed opening 'Bbcode/Filters/Youtube.php' for inclusion (include_path='.;C:\php5\pear') in E:\wamp\test\templates\bbcode\BbCode.class.php on line 264

w php.ini znalazlem i odznaczylem
Cytat
Windows: "\path1;\path2"
include_path = ".;c:\php\includes;E:\wamp\www\test\Bbcode\"

ale to nic nie dalo ;/ prosze o pomoc
Avatarus
a jak zrobić zwykłe prasowanie
Kod
<br />

W smf bbcode i html jest mieszane podczas zapisu.
Dzięki za pomoc
wookieb
Musisz wcześniej zamienić "<br />" na znak nowej linii.
mlawnik
A czy jest możliwość parsowania youtube po samym ID?
@gorzat, użyj patcha Zajeca
wookieb
Tak. W tagu podajesz po prostu tylko jego ID
mlawnik
No ale jak podaje samo id to mi sie wyswietla ramka z youtubem i tekstem, ze not found.
Fakt, uzylem patcha zejeca i zmienilem player na nowy.
Mozesz pomoc?

Moj kod:

github.com/marcinlawnik/BBcode-parser
wookieb
Jestem kretynem. Mój błąd
W pliku Filter/Youtube.php
zamień linijke
  1. $idMovie = htmlspecialchars($str);

na
  1. $idMovie = htmlspecialchars($bodyStr);

Ja też to potem wrzucę na githuba.
mlawnik
Poprawione.

Zaraz dorzuce twoje przyklady i zrobie diff na twoim oryginale i mojej modyfikacji.

Ew. po prostu zrobisz forka z mojej wersji.
wookieb
Raczej nie forka. I tak będę wydawał nową wersję.
mlawnik
Czekam z nieciepliwością.

EDIT: Dla potomnych:

Zawartosc paczki z pierwszego postu:

GitHub

Paczka z pierwszego postu z modyfikacjami:
- patch zajeca
- poprawka w youtube.php taka sama jak w patchu bo zajec ja pominal
- poprawka 2 posty wyzej z $str i $bodyStr

GitHub

nekomata
Jedna rzecz , czy parser blokuję html'a i XSS czy to już należy do nas?
wookieb
Sam blokuje.
nekomata
Dzięki , zaoszczędzi mi to trochę włosów na głowie tongue.gif ogólnie świetna sprawa.Myślałeś może o dodaniu tagu "spoiler"?
wookieb
Nie planuje, bo jest to zbyt zależne od widoku.
nekomata
W sumie dzięki takiemu łatwemu do zrozumienia rozpisaniu klasy bardzo łatwo dopisywać tagi. Jakby ktoś chciał tag spoiler z jQuery to ja zrobiłem to tak :
Zaraz po tag'u Quote w pliku Basic.php
  1. ,
  2. 'spoiler'=>array(
  3. 'open'=>'div class="spoiler"><input type="button" value="Spoiler"/><div class="spoiled"',
  4. 'close'=>'div></div'
  5. )
CSS :
  1. .spoiler , .spoiler input {
  2. margin:5px;
  3. border: 1px white dashed;
  4. }
  5. div.spoiler div.spoiled{
  6. display:none;
  7. margin:5px;
  8. }
i w JS
[JAVASCRIPT] pobierz, plaintext
  1. $('.spoiler').children('input').click(function(){
  2. $(this).siblings('.spoiled').toggle();
  3. });
[JAVASCRIPT] pobierz, plaintext
A tak ogólnie mówiąc to ja taki parser bym sprzedawał a nie publikował .. biggrin.gif
EDIT : Pozwoliłem sobie otworzyć tagi spowrotem tongue.gif Ponieważ "domykają" się one w linijce 670,695 i 790 pliku BbCode.class.php tongue.gif
szczeku
Cześć,

Na początek napisze, że świetny parser stworzyłeś.

Ale mam dwie kwestie.

1. Zagnieżdzanie tagów, np:

  1. [b]123[/b]

zamienia na:
  1. <b><b>123</b></b>

zamiast na:
  1. <b>123</b>


pomimo iż w filtrze taga 'b' jest :
  1. 'notallowed_child'=>array('b')


inne tagi usuwa, jeśli się je poda jako niedozwolone

2. Chciałbym zrobić tak, żeby nie domykało tagów np. gdy zapomni się napisać [/quote] , to żeby nie robiło cytowania, teraz cytatem jest objęte wszystko do końca. Czy jest jakiś sposób aby tak się działo (a raczej nie działo smile.gif).

pozdrawiam
nekomata
@mlawnik popraw tag youtube'a dokładnie mam na myśli linijkę 77 , usuń "allowfullscreen" bo w3c validator krzyczy a nic to allowfullscreen niezmienia bo to nie jest embed tylko iframe.
wookieb
1) Tak zajmę się tym
2) Niestety raczej nie ma takiej opcji ale racja muszę o tym pomyśleć.
mlawnik
@nekomata, poprawione.
evolucja
Jak korzystać z tej zajawki? Mam w pętli wyświetlanie newsów. W miejscu na treść dodałem:
  1. $bbcode = new BbCode();
  2. $bbcode->getSettings()->trustText = true;
  3. $bbcode->parse($news['content']);
  4. echo $bbcode->cutText(150);

W efekcie otrzymuję kompletnie różnej długości teksty. Jedne mają kilka wyrazów, inne wyświetlają się prawie całe. W zależności od tego jaką liczbę wstawię w cutText to teksty zmieniają swoją długość - jak było kilka zdań to teraz pokazuje się jeden wyraz i odwrotnie.
Co robić?
wookieb
A na jakiej podstawie mogę stwierdzić co jest źle skoro tych tekstów nie otrzymałem?
Pamiętaj o białych znakach bo skrypt ich nie rozróżnia od "rzeczywistych" znaków.
evolucja
No spróbuj sobie do tego $news['content'] wpisać np.:
Kod
Akademia Piłkarska posiada swoje logo. Grafiką, symbolami i kolorystyką nawiązuje do logo założyciela szkółki Klubu Sportowego Górnik Wesoła. Jest to okrągły znaczek z biało - zielono - czarnymi barwami klubowymi z dodatkiem koloru żółtego. Jak przystało na prawdziwą akademię nakryty jest [b]biretem[/b] symbolizującym edukację młodocianych adeptów sztuki piłkarskiej.

u mnie efekt to:
Kod
Akademia...
wookieb
Zbadaj tekst za pomocą var_dump i sprawdź czy nie maasz białych znaków na początku.
evolucja
1. Wychodzi string(397) podczas gdy tekst wklejony w Wordzie pokazuje liczbę znaków(ze spacjami): 369. Gdy zmienię liczbę ze 150 do 100 tekst skraca do takiej postaci:
Kod
Akademia Piłkarska posiada swoje logo. Grafiką, symbolami i kolorystyką nawiązuje do logo założyciela szkółki Klubu Sportowego Górnik Wesoła. Jest to okrągły znaczek z biało - zielono - czarnymi...


_________
W tym skracaniu musi być jakiś błąd. To nie wina żadnych białych znaków- próbowałem nawet przepisać tekst od początku. Niemożliwe aby z parametrem 260 skracało do jednego wyrazu a z 250 nie skracało prawie w ogóle.



2. Czy tag URL nie powinien też działać gdy poda się sam adres strony w tagach? np.:
Kod
[url]www.google.pl[/url]


3. Da się jakoś zmusić tag IMG do działania z względnymi adresami URL? Na przykład kod:
Kod
[img]photos/thumbs/akademia_logo.png[/img]

otworzony na stronie http://strona.pl/katalogstrony1/ wyświetliło by obrazek
Kod
http://strona.pl/katalogstrony1/photos/thumbs/akademia_logo.png
?
wookieb
Cytat(evolucja @ 9.05.2011, 17:38:09 ) *
W tym skracaniu musi być jakiś błąd. To nie wina żadnych białych znaków- próbowałem nawet przepisać tekst od początku. Niemożliwe aby z parametrem 260 skracało do jednego wyrazu a z 250 nie skracało prawie w ogóle.

Sprawdzę choć nie chce mi się wierzyć.

Cytat
2. Czy tag URL nie powinien też działać gdy poda się sam adres strony w tagach? np.:
Kod
[url]www.google.pl[/url]

Tak też działa, tylko że URL musi zaczynać się do http. To faktycznie troszkę bardzo restrykcyjne. Poprawię.

Cytat
3. Da się jakoś zmusić tag IMG do działania z względnymi adresami URL? Na przykład kod:
Kod
[img]photos/thumbs/akademia_logo.png[/img]

otworzony na stronie http://strona.pl/katalogstrony1/ wyświetliło by obrazek
Kod
http://strona.pl/katalogstrony1/photos/thumbs/akademia_logo.png
?

Założeniem było podawanie url-i do rzeczywistych obrazków. Jeżeli chcesz to wyłączyć to filters/image.class.php linia 85 sprawdza czy adres jest URL-em.
Dodatkowo musisz upewnić się, że wyłączyłeś sprawdzanie rzeczywistych rozmiarów zdjęcia (flaga $checkRealImageSize filters/image.class.php)
evolucja
Łap paczkę z przykładem. Coś z kodowaniem nawet jest nie tak... Wszystko zapisywane w UTF-8, nie wiem czemu więc tak jest.
POBIERZ

U mnie efekt tego skryptu to:
Kod
string(16) "W czwartek 21…"
wookieb
Ok poprawione.
Dzięki za znalezienie błędu smile.gif
mlawnik
Można prosić o numery linijek i typy zmian? Staram się na bieżąco updateować to w moim projekcie.
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-2024 Invision Power Services, Inc.