За последние 24 часа нас посетили 21388 программистов и 1698 роботов. Сейчас ищут 1993 программиста ...

помогите разобраться

Тема в разделе "Регулярные выражения", создана пользователем gkhelloworld, 18 авг 2009.

  1. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    есть код в тегах
    $fpostx ='[code-]CODE#1[/code-]\n
    [code-]CODE#2[/code-]
    ';

    highlight_codex - Функция подстветки кода

    preg_match("#\[code\](.*?)\[/code\]#si",$fpostx, $matches);
    $restx = highlight_codex($matches[1]);
    $restx - переменная показывает КОД1

    далее нахожу в переменой fpostx код в тегах [code-][/code-] и заменяю на $restx (думаю ясно зачем это делается)

    $search[0] = "#\[code\](.*?)\[/code\]#si";
    $replace[0] = $restx;


    $fpostx = preg_replace($search, $replace, $fpostx);


    Вопрос состоит в том, как избавится от того, что приходится искать по отдельности коды, т.е. мне нужен чтобы сразу все 2 и более кодов были выведены, а так получается что КОД1, два раза высвечивается.
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP 5.3

    PHP:
    1. <?php
    2.  
    3. $text = "Код [code-]<?='Hello'?>[/code-] тут не код и
    4.          [code-]<?php\r\necho 'abc';\r\n?>[/code-]";
    5.  
    6. $regex = '/\[code-\](.+?)\[\/code-\]/s';
    7. $code  = preg_replace_callback($regex,
    8.          function($code) {
    9.             return highlight_string($code[1]);
    10.          }, $text);
    11.  
    12. ?>
     
  3. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    5.3? а как же 5.2.6 ?
    пример не работает..
     
  4. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    или даже так..

    $replace[11] у нас хранится выразеный код из тег
    Код (Text):
    1.  
    как применить функцию highlight_string, чтобы этот выразеный участок на выходе был уже "разукрашен"

    $search[11] = "#\[code\](.*?)\[/code\]#si";
    $replace[11] = '\1';
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Конечно не работает, я же написал, что для 5.3
    Неужели сложно перенести на 5.2.х заменив на create_function или любой свой калбэк.