Autor Zpráva
liborse
Profil
Zdravím, mám jeden menší problém. Předem podotýkám, že hledat umím, ale v tomto případě se na mě jaksi neusmálo štěstí. A nyní k mému problému. Jedná se o to, že potřebuji nahradit některé html tagy za bbcode (na důvod se mě neptejte ;), prostě to tak potřebuji. Přišel jsem na úžasnou funkci preg_replace, která mi funguje když nahrazuji
<i>něco</i>
za
[i ]něco[/i ]
(v kódu jsem přidal mezeru před uzavřením bbcode tagu, protože jinak se to tady interpretuje a nebyl by vidět kód), ovšem pokud vložím něco typu
<span style='font-style: italic;'>dsafd</span>
, tak už ta funkce nefunguje. Předpokládám, že dělám něco špatně já. Zdrojový kód je tento (ořezal jsem ho):
function BBcode($text){
   $a = array(
      "/\<i\>(.*?)\<\/i\>/is",
      "/\<span style=\'font-style: italic;\'>(.*?)\<\/span\>/is", 
   );
   $b = array(
      "[i ]$1[/i ]",
      "[i ]$1[/i ]",
   );
   $text = preg_replace($a, $b, $text);
   return $text;
}

předpokládám, že tam dělám chybu u escapování, nevím, které znaky je třeba escapovat.

prostě mi jde o to, abych třeba řetězec
<span style='font-style: italic;'>dsafd</span>
převedl na
[b ]dsafd[/b ]
, děkuji za nakopnutí, alespoň kde čerpat informace, nechci aby mi zde kdokoliv z vás psal kód, ale spíš vysvětlil co a jak. Jinak z manuálové stránky nejsem zrovna moudrý.
BetaCam
Profil
liborse
že tam dělám chybu u escapování, nevím, které znaky je třeba escapovat.

Ano máš. Znaky < a > nepatří mezi metaznaky proto se neescapují.

Jinak z manuálové stránky nejsem zrovna moudrý.

To se ti ani nedivím tam je totiž pouze popsáno používání funkce, ale né samotná syntaxe regulárních výrazů.

děkuji za nakopnutí, alespoň kde čerpat informace, nechci aby mi zde kdokoliv z vás psal kód, ale spíš vysvětlil co a jak.

Hezký přístup. Doporučuju ti stránku www.regularnivyrazy.info/ myslím, že tam najdeš dostatek informací aby si mohl s regulárníma výrazama začít pracovat.
Mike8748
Profil
aby clovek nemusel zkoumat jakej znak oescapovat a jakej ne, tak tady mame peknou funkci preg_quote

http://cz2.php.net/preg_quote
liborse
Profil
No, možná se vám to nebude líbit, ale já to obešel ;). Regulární výrazy mi asi nikdy nepřirostou k srdci, takže jsem to udělal tak, že třeba
<span style='font-style: italic;'>

nahradím za
<spanitalic>

a potom už není problém to použít. Díky za rady, už ty odkazy mám v záložkách, v budoucnu to určitě projedu!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0