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

Статус
В этой теме нельзя размещать новые ответы.

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, $myshab, 1);
}
Он находит в переменной myshab текст вида [[text1|text2]] и возвращает в результате либо text1 либо text2 без всяких скобок. Помогите пожайлуста, что в этом коде нужно поменять чтобы в данном макросе вместо квадратных скобок были фигурные скобки вида {{text1|text2}}??
 
вместо
Код:
preg_match("/\[\[([^\[\[]*)\]\]/", $myshab, $m1);

нужно
Код:
preg_match('/\{\{([^[[]*)\}\}/', $myshab, $m1);

и вместо
Код:
$myshab=preg_replace("/\[\[".$m1[1]."\]\]/", $s, $myshab, 1);
нужно
Код:
$myshab=preg_replace("/\{\{".$m1[1]."\}\}/", $s, $myshab, 1);
 
ГЕНИАЛЬНО! Спасибо Вам огромное заработало, первый раз попробовал и не там был заменил, оказалось этот цикл дублировался еще для другой функции и я не там был вставил.

Добавлено через 36 минут
Но сама проблема ради чего все и затевалось так и не решена :confused: Вобщем нужно чтобы при нахождении данного макроса [[text1|tex2]] или как было исправлено в результате {{text1|text2}} можна было использовать внутри текс в квадратных скобках - пример {{text1|[text2]}}
 
ну так и пиши
что спросил то и получил
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, $myshab, 1); 
}
поробуй так
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху