Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielokrotne pogrubienie
Forum PHP.pl > Forum > Przedszkole
Kroob
W prostym chacie, którego używam jest możliwość pogrubienia tekstu.
  1. <?php
  2. $html = ereg_replace(&#092;"(.*)\", \"<b>1</b>\", $html);
  3. ?>
Umożliwia jednokrotne użycie pogrubienia:

Kod
[b]tekst1[/b]
zmienia na:
Kod
<b>tekst1</b>

ale kiedy w wiadomości stosuję kolejne pogrubienie:
Kod
[b]tekst1[/b] inny tekst [b]tekst2[/b]
zmienia na:
Kod
<b>tekst1[/b] inny tekst [b]tekst2</b>

Jak uzyskać wielokrotne pogrubienie ?
Bardzo proszę łopatologicznie, jestem kompletnie zielony sad.gif
strife
Witam,

Może tak?
  1. <?php
  2.  
  3. $string = 'sdadsa dsadadasdasdassdasdasdas';
  4. $array = array('' => '<b>',
  5.  '=> '</b>'
  6. );
  7. $st = strtr($string, $array);
  8. echo $st;
  9.  
  10. ?>


Pozdro!
pillot
a zamien na to:

  1. <?php
  2. $html = ereg_replace(&#092;"(.*?)\", \"<b>1</b>\", $html); // .*? zamiast .*
  3. ?>
Kroob
scarface
Nie poszło możliwe że źle zastosowałem sad.gif
Zamieszczę obszerniejszy fragment kodu:
  1. <?php
  2. function safeHTML($html) {
  3.  $html = htmlspecialchars($html, ENT_QUOTES);
  4.  $html = ereg_replace(&#092;"[link](.*)[/link]\", \"<a href=\"1\" target=\"_blank\">1</a>\", $html);
  5.  $html = ereg_replace(&#092;"(.*)\", \"<b>1</b>\", $html);
  6.  $html = ereg_replace(&#092;"(.*)\", \"<i>1</i>\", $html);
  7.  $html = ereg_replace(&#092;"(.*)\", \"<u>1</u>\", $html);
  8.  $html = ereg_replace(&#092;"[shout](.*)[/shout]\", \"<font size=+1>1</font>\", $html);
  9.  return $html;
  10. }
  11. ?>
jakby to miało wyglądać w całości ?

pillot
Po zmianie:
Kod
.*? zamiast .*
Zwraca pusty ciąg sad.gif
strife
  1. <?php
  2.  
  3. function safeHTML($html) {
  4.  $html = htmlspecialchars($html, ENT_QUOTES);
  5.  
  6.  $array = array('' => '<b>',
  7. '=> '</b>',
  8. '' => '<i>',
  9. '=> '</i>',
  10. '' => '<u>',
  11. '=> '</u>'
  12. );
  13.  
  14.  $html = strtr($html, $array);
  15.  
  16.  $html = ereg_replace(&#092;"[link](.*)[/link]\", \"<a href=\"1\" target=\"_blank\">1</a>\", $html);
  17.  $html = ereg_replace(&#092;"[shout](.*)[/shout]\", \"<font size=+1>1</font>\", $html);
  18.  
  19.  return $html;
  20. }
  21.  
  22.  
  23. echo safeHTML(' das  dsadas  das');
  24.  
  25. ?>


Co do [link] i [shout] nie mam pojęcia - nie jestem guru w regexp...

Pozdrawiam!
ActivePlayer
taka mala wskazówka... na forum skrypty php, w funkcjach... znajdziesz temat bbcode => html ... zerknij w nią
Kroob
smile.gif
Działa scarface wielkie dzięki !
Guest
Cytat(scarface @ 2005-04-21 20:54:22)
  1. <?php
  2. $array = array(
  3.  '' => '<b>',
  4.      '=> '</b>',
  5.      '' => '<i>',
  6.      '=> '</i>',
  7.      '' => '<u>',
  8.      '=> '</u>'
  9.      );
  10. ?>

Z takim czymś radzę obchodzić się ostrożnie. Ułatwia userom stworzenie niepoprawnego kodu ( oto mój wpis ). Próbowałeś tak?

  1. <?php
  2. $search = array(
  3. &#092;"/[b](.*?)/\",
  4. &#092;"/[i](.*?)/\",
  5. &#092;"/[u](.*?)/\"
  6. );
  7. $replace = array(
  8. &#092;"<strong>1</strong>\",
  9. &#092;"<em>1</em>\",
  10. &#092;"<u>1</u>\"
  11. );
  12. ?>


Przy okazji użyłem strong i em, które afair są bardziej lubiane przez przeglądarki tekstowe.
Kroob
Cytat(Guest @ 2005-04-22 05:49:01)
Próbowałeś tak?
Próbowałem, tak jak pisałem wyżej:
Cytat
Po zmianie:
Kod
.*? zamiast .*
Zwraca pusty ciąg sad.gif
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-2025 Invision Power Services, Inc.