Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перевод bbcode в html
 
 автор: clubxaliav   (19.04.2011 в 19:42)   письмо автору
 
 

есть в бд текст, в нем есть текст, есть ли скриптик чтоб конвертировал в .html <b>текст</b>

  Ответить  
 
 автор: cheops   (19.04.2011 в 20:16)   письмо автору
 
   для: clubxaliav   (19.04.2011 в 19:42)
 

Самый простетский вариант позволяет обойтись без регулярных выражений
<?php
  $theme 
str_replace(array("[b ]""[/b]"), array("<b>""</b>"), $theme);
?>
Если количество открытых тэгов должно совпадать с количеством закрытых, тогда целесообразнее воспользоваться регулярным выражением
<?php
  $theme 
preg_replace("#\[b\](.+)\[\/b\]#iU",'<b>\\1</b>',$theme);
?>

  Ответить  
 
 автор: clubxaliav   (20.04.2011 в 09:40)   письмо автору
 
   для: cheops   (19.04.2011 в 20:16)
 

Можно ли объединить как нибудь эту запись?

$tekst = str_replace(array("", ""), array("<b>", "</b>"), $tekst);
$tekst = str_replace(array("", ""), array("<i>", "</i>"), $tekst);

  Ответить  
 
 автор: cheops   (20.04.2011 в 09:55)   письмо автору
 
   для: clubxaliav   (20.04.2011 в 09:40)
 

Можно
<?php
  $find 
= array("[ b]""[/b]""[ i]""[/i]");
  
$rplc = array("<b>""</b>""<i>""</i>");
  
$tekst str_replace($find$rplc$tekst);
?>

  Ответить  
 
 автор: clubxaliav   (20.04.2011 в 11:59)   письмо автору
 
   для: cheops   (20.04.2011 в 09:55)
 

)))) ну это для 2х, а если их будет больше?

  Ответить  
 
 автор: cheops   (20.04.2011 в 12:10)   письмо автору
 
   для: clubxaliav   (20.04.2011 в 11:59)
 

Массивы можно формировать самыми разными способами, причем их формирование можно поручить отдельной функции.
<?php 
  $find
[] = "[ b]";
  
$rplc[] = "<b>";
  
$find[] = "[/b]";
  
$rplc[] = "</b>";
  
$find[] = "[ i]";
  
$rplc[] = "<i>";
  
$find[] = "[/i]";
  
$rplc[] = "</i>";
  
$tekst str_replace($find$rplc$tekst); 
?>
В общем количество элементов в них не является проблема, можно даже написать функцию, которая будет принимать буквы, а на выходе выдавать нужные массивы
genrate("i", "b", "code", "pre");

  Ответить  
 
 автор: clubxaliav   (04.07.2011 в 21:00)   письмо автору
 
   для: cheops   (20.04.2011 в 12:10)
 

Сталкнулся с трудностями перевода [url=]текст[/url]

как перенести ссылку?

[url= http://site/]текст[/url] в <a href="http://site/">текст</a>


пробывал так:

$theme = str_replace(array("[url=/(*?)/ ]", "[/url]"), array("<a href='$1'>", "</a>"), $theme);


немного не понимаю как перенести.

  Ответить  
 
 автор: SHAman   (04.07.2011 в 23:00)   письмо автору
 
   для: clubxaliav   (04.07.2011 в 21:00)
 

Ох. Популярная тема и никак не унимается:)
раз
два

  Ответить  
 
 автор: clubxaliav   (06.07.2011 в 09:54)   письмо автору
 
   для: SHAman   (04.07.2011 в 23:00)
 

Спасибо за статью, пришлось немного по разбираться так как не все теги у меня срабатывали!

  Ответить  
 
 автор: SHAman   (06.07.2011 в 11:30)   письмо автору
 
   для: clubxaliav   (06.07.2011 в 09:54)
 

Разобрались главное?

  Ответить  
 
 автор: clubxaliav   (06.07.2011 в 13:20)   письмо автору
 
   для: SHAman   (06.07.2011 в 11:30)
 

Ну более менее, просто не понятно как заменить тег [o] [/o]
если его конечный результат должен быть вот таким:

<span style='text-decoration: overline'></span>

  Ответить  
 
 автор: SHAman   (07.07.2011 в 10:33)   письмо автору
 
   для: clubxaliav   (06.07.2011 в 13:20)
 

$text = preg_replace('/\[o\]/', '<span style="text-decoration: overline">', $text);
$text = preg_replace('/\[\/o\]/', '</span>', $text);


Странно что вы не смогли решить эту задачу. Я старался ведь и объяснял в двух постах как это происходит.

  Ответить  
 
 автор: SHAman   (20.04.2011 в 13:11)   письмо автору
 
   для: clubxaliav   (20.04.2011 в 09:40)
 

preg_replace_all('/[(\/)(b|i|u|h1|h2|h3|h4)]/', "<$1$2>", $text);


Не проверял, но смысл такой.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования