персер текста

Тема в разделе "PHP", создана пользователем pepeh, 10 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. pepeh

    pepeh Создатель

    Регистр.:
    24 май 2008
    Сообщения:
    43
    Симпатии:
    1
    Мне нужно сделать такой скрипт который заменяет например
    на
    и еще может быть такой варианту что некоторый текст уже есть отформатированный bb кодами, чтобы оно стерло форматирования и обратно все исправило
    HTML:
    [B]Название[/B]: Соседи
    Оригинальное название: Соседи
    [B]Год выхода[/B]: 2010
    Жанр: Мелодрама
    [B]Режиссер[/B]: Олег Филиппенко
    В ролях: Полина Войневич, Сергей Деревянко, Александр Игнатуша, Лидия Вовкун, Евгений Капорин, Игорь Антонов
    и чтобы получился такой как в примере 2.


    Это будет вводиться в форму текст и так перерабатываться, + у меня есть еще вопросы, но это потом. Я знаю что это должно быть через регулярные выражения, но я в них не разбираюсь

    Надеюсь мне кто поможет.
     
  2. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    мб так:
    PHP:
    <?php
    $str
    ='Название: Соседи
    Оригинальное название: Соседи
    Год выхода: 2010
    Жанр: Мелодрама
    Режиссер: Олег Филиппенко
    В ролях: Полина Войневич, Сергей Деревянко, Александр Игнатуша, Лидия Вовкун, Евгений Капорин, Игорь Антонов'
    ;
    preg_match_all('/^.*?\:/'$str$match);
    $k=count($match[1]);
    for(
    $i=0$i<$k$i++)
    {
    $str=preg_replace('/^.*?\:/'"[b]".$match[1][$i]."[/b]"$str);
    }
    echo 
    $str;
    ?>
    И с :
    PHP:
    <?php
    $str
    ="[B]Название[/B]: Соседи
    Оригинальное название: Соседи
    [B]Год выхода[/B]: 2010
    Жанр: Мелодрама
    [B]Режиссер[/B]: Олег Филиппенко
    В ролях: Полина Войневич, Сергей Деревянко, Александр Игнатуша, Лидия Вовкун, Евгений Капорин, Игорь Антонов"
    ;
    $str=preg_replace('/\[b\]/i'''$str);
    $str=preg_replace('/\[\/b\]/i'''$str);
    ?>
    P.S. не тестил
     
  3. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    PHP:
    <?php
    $content 
    "[B]Название[/B]: Соседи
    Оригинальное название: Соседи
    [B]Год выхода[/B]: 2010
    Жанр: Мелодрама
    [B]Режиссер[/B]: Олег Филиппенко
    В ролях: Полина Войневич, Сергей Деревянко, Александр Игнатуша, Лидия Вовкун, Евгений Капорин, Игорь Антонов"
    ;
    $content=preg_replace('/(\[B\]|\[b\]|\[\/B\]|\[\/b\])/ms',"",$content);
    echo(
    preg_replace('/(^.*?):(.*?$)/ms'"[B]\\1[/B]:\\2"$content));
    ?>
    Непонятно как нужно сделать жирный. bb кодами или хтмл?
     
    pepeh нравится это.
  4. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    бб код как я понял
     
  5. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    Если хтмл-ом, то заменяй строку в моём примере:
    PHP:
    echo(preg_replace('/(^.*?):(.*?$)/ms'"<b>\\1</b>:\\2"$content));
     
  6. pepeh

    pepeh Создатель

    Регистр.:
    24 май 2008
    Сообщения:
    43
    Симпатии:
    1
    Первый код ничего не изменил
    а второй совсем пустая страница


    Добавлено через 1 минуту
    Все суперр работает
    2 google.com:
    ну все равно как делать жирный, это же можно себе уже изменить)))
    Я немножко редактировал твой код, там выводило без переноса строк.
    Получилось так:
    PHP:
    <?php
    $content 
    "[B]Название[/B]: Соседи
    Оригинальное название: Соседи
    [B]Год выхода[/B]: 2010
    Жанр: Мелодрама
    [B]Режиссер[/B]: Олег Филиппенко
    В ролях: Полина Войневич, Сергей Деревянко, Александр Игнатуша, Лидия Вовкун, Евгений Капорин, Игорь Антонов"
    ;
    $content=preg_replace('/(\[B\]|\[b\]|\[\/B\]|\[\/b\])/ms',"",$content);
    $content=preg_replace('/(^.*?):(.*?$)/ms'"[B]\\1[/B]:\\2"$content);
    $content str_replace"\n""<br />"$content); 
    echo 
    $content;
    ?>








    я написал скрипт и он мне кажется слишком долгим ... Его можно как-то по другому реализовать??

    Это checkbox в форме, если ты его выбрал создается cookie и checkbox остается checked, если даже перезагрузить страницу. а если снять флажок и отправить тогда cookie удаляется

    PHP:
    <?
    if (isset(
    $_COOKIE['ua_to_ru'])) $checkbox1 'checked';
    if (isset(
    $_POST['subm'])) {
    if (isset(
    $_POST['ch_ua_to_ru'])) {
    setcookie("ua_to_ru",'1',time()+3600);
    $checkbox1 'checked';
    echo 
    "checked";
    } else {
    setcookie ("ua_to_ru"""time() - 3600); echo "not checked"$checkbox1 '';}
    }

    echo <<<html
    <form name="form1" method="post" action="">
      <input type="checkbox" name="ch_ua_to_ru" id="ch_ua_to_ru "
    $checkbox1>
      <label for="ch_ua_to_ru">флажок</label>
      <input type="submit" name="subm" id="subm" value="Отправить">
    </form>
    html;
    ?>
     
  7. pepeh

    pepeh Создатель

    Регистр.:
    24 май 2008
    Сообщения:
    43
    Симпатии:
    1
    А если вставить такое

    Получается

    PHP:
    [B]Название[/B]: Соседи
    [B]Оригинальное название[/B]: Соседи
    [B]Год выхода[/B]: 2010
    [B]Жанр[/B]: Мелодрама
    [B]Режиссер[/B]: Олег Филиппенко
    [B]В ролях[/B]: Полина ВойневичСергей ДеревянкоАлександр ИгнатушаЛидия ВовкунЕвгений КапоринИгорь Антонов
    [B]
    Прикол

    Инфо
    [/B]:
    как исправить???

    код такой

    PHP:
    $text=preg_replace('/(\[B\]|\[b\]|\[\/B\]|\[\/b\])/ms',"",$text);
    $text=preg_replace('/(^.*?):(.*?$)/ms'"[B]\\1[/B]:\\2"$text);
     
  8. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
    $text=preg_replace('/(\[B\]|\[b\]|\[\/B\]|\[\/b\])/ms',"",$text);
    $text=preg_replace('/(^[^\n]*?):(.*?$)/ms'"[B]\\1[/B]:\\2"$text);
     
    pepeh нравится это.
  9. pepeh

    pepeh Создатель

    Регистр.:
    24 май 2008
    Сообщения:
    43
    Симпатии:
    1
    Как сделать чтобы оно не ставило тег если до двоеточия есть расстояние например 30 символов. Если в описании есть двоеточие тогда оно все описание до двоеточия сделает жирным.
    есть
    Шоушенк — название тюрьмы. И если тебе нет еще 30-ти, а ты получаешь пожизненное, то приготовься к худшему: для тебя выхода из Шоушенка не будет!
    Станет
    HTML:
    [B]Шоушенк — название тюрьмы.
    И если тебе нет еще 30-ти, а ты получаешь пожизненное, то приготовься к худшему[/B]: для тебя выхода из Шоушенка не будет!
     
  10. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
    $text=preg_replace('/(^[^\n]{1,29}):(.*?$)/ms'"[B]\\1[/B]:\\2"$text);
    {1,29} - выделяемый BB-кодом текст может содержать от 1 до 29 символов
     
Статус темы:
Закрыта.