Нужна помощь профи с кусочком кода

Тема в разделе "PHP", создана пользователем monz, 17 дек 2009.

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

    monz Создатель

    Регистр.:
    24 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Есть такой код:
    PHP:
    for ($i=0$i<100$i++){
            if (!
    strstr($myshab"[[")) break 1;
            
    preg_match("/\[\[([^\[\[]*)\]\]/"$myshab$m1);
            
    $rw=explode("|"$m1[1]); $s=$rw[array_mt_rand($rw)];
            
    $m1[1]=str_replace("|""\|"$m1[1]);
            
    $m1[1]=str_replace("[""\["$m1[1]); $m1[1]=str_replace("]""\]"$m1[1]);
            
    $m1[1]=str_replace("(""\("$m1[1]); $m1[1]=str_replace(")""\)"$m1[1]);
            
    $m1[1]=str_replace("-""\-"$m1[1]);
            
    $s=str_replace("{{""["$s); $s=str_replace("}}""]"$s);
            
    $myshab=preg_replace("/\[\[".$m1[1]."\]\]/"$s$myshab1);
    }
    Он находит в переменной myshab текст вида [[text1|text2]] и возвращает в результате либо text1 либо text2 без всяких скобок. Помогите пожайлуста, что в этом коде нужно поменять чтобы в данном макросе вместо квадратных скобок были фигурные скобки вида {{text1|text2}}??
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    вместо
    Код:
    preg_match("/\[\[([^\[\[]*)\]\]/", $myshab, $m1);
    
    нужно
    Код:
    preg_match('/\{\{([^[[]*)\}\}/', $myshab, $m1);
    
    и вместо
    Код:
    $myshab=preg_replace("/\[\[".$m1[1]."\]\]/", $s, $myshab, 1);
    
    нужно
    Код:
    $myshab=preg_replace("/\{\{".$m1[1]."\}\}/", $s, $myshab, 1);
    
     
  3. monz

    monz Создатель

    Регистр.:
    24 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    ГЕНИАЛЬНО! Спасибо Вам огромное заработало, первый раз попробовал и не там был заменил, оказалось этот цикл дублировался еще для другой функции и я не там был вставил.

    Добавлено через 36 минут
    Но сама проблема ради чего все и затевалось так и не решена :confused: Вобщем нужно чтобы при нахождении данного макроса [[text1|tex2]] или как было исправлено в результате {{text1|text2}} можна было использовать внутри текс в квадратных скобках - пример {{text1|[text2]}}
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    ну так и пиши
    что спросил то и получил
    PHP:
    for ($i=0$i<100$i++){ 
            if (!
    strstr($myshab"{{")) break 1
            
    preg_match("/\{\{(.*)\{\{/"$myshab$m1); 
            
    $rw=explode("|"$m1[1]); $s=$rw[array_mt_rand($rw)]; 
            
    $m1[1]=str_replace("|""\|"$m1[1]); 
            
    $m1[1]=str_replace("(""\("$m1[1]); $m1[1]=str_replace(")""\)"$m1[1]); 
            
    $m1[1]=str_replace("-""\-"$m1[1]); 
            
    $myshab=preg_replace("/\{\{".$m1[1]."\}\}/"$s$myshab1); 

    поробуй так
     
Статус темы:
Закрыта.