Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generator bbcode i znaczniki listy
piotrek24
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2006

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


Wygenerowałem sobie skrypt bbcode tylko do tworzenia listy

  1. <?php
  2. Function bbcode($str)
  3. {
  4. $str=htmlspecialchars(trim($str));
  5.  
  6. $str = preg_replace("#
      (.*?)
    #si"
    , "<ul>1</ul>", $str);
  7. $str = preg_replace("#[list=(http://)?(.*?)](.*?)[/list]#si", "<ol type=\"2\">3</ol>", $str);
  8. $str = preg_replace("#[*](.*?)s#si", "<li>1</li>", $str);
  9.  
  10. $str=nl2br($str);
  11.  
  12. return $str;
  13. }
  14.  
  15. $text = '
    • jakis tam sobie punkt pierwszy
  16. jakis tam sobie punkt drugi
  17. ';
  18.  
  19. echo bbcode($text);
  20. ?>


  21. Problem w tym że otrzymuję taki wynik

    - jakis
    tam sobie punkt pierwszy
    - jakis
    tam sobie punkt drugi

    i taki kod html

    <ul><br />
    <li>efepfpwejg</li>rejge rigoje rog<br />
    <li>ergerg</li>erioghoehr georgh <br />
    </ul>

    Może ktoś pomoże jak rozwiązać ten problem? Znaczniki zamykania punktu wstawia już po pierwszym wyrazie, no i wszędzie wstawia znaczniki nowej linii...
    Go to the top of the page
    +Quote Post
    sniezny_wilk
    post
    Post #2





    Grupa: Zarejestrowani
    Postów: 732
    Pomógł: 80
    Dołączył: 25.05.2005
    Skąd: Szczecin

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


    nl2br - to dodaje Tobie znaczniki nowej lini. Zmienia \n na <br/>. Niby trim powinno usuwać Tobie \n, ale cytując z manuala: "nl2br — Inserts HTML line breaks before all newlines in a string". Mogę się mylić, ale czy nie chodzi tu, że znak <br/> zostanie dodany do każdej nowej lini, nawet tej która nie posiada \n ? A tekście wprowadzanym masz entery.

    Ten post edytował sniezny_wilk 4.01.2008, 13:11:42


    --------------------
    Go to the top of the page
    +Quote Post
    piotrek24
    post
    Post #3





    Grupa: Zarejestrowani
    Postów: 47
    Pomógł: 0
    Dołączył: 22.07.2006

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


    Tak wiem że ta funkcja wstawia znaczniki nowej linii

    mi bardziej chodzi o to że ten fragment kodu:

    1. <?php
    2. $str = preg_replace("#[*](.*?)s#si", "<li>1</li>", $str);
    3. ?>


    zamienia bbcode:

    [*] jakiś tam sobie text

    na:

    <li>jakiś</li>tam sobie text

    a powinno być

    <li>jakiś tam sobie text</li>
    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 Aktualny czas: 20.08.2025 - 09:26