jami
Постоялец
- Регистрация
 - 10 Авг 2011
 
- Сообщения
 - 114
 
- Реакции
 - 40
 
- Автор темы
 - #1
 
PHP, есть задача:
заменить в документе все строки вида {a1|b2|c3|etc} на один из элементов разделенных "|" в скобках, хотелось бы сделать одним регекспом.
т.е. {a1|b2|c3|etc} -> убрать {} -> split '\|' -> rand
	
	
	
		
в этом коде rand_msg от $msg возвращает исходное $msg, без нужных подстановок.. хотя вроде все действия внешне похожи на правду.
Подскажите плз, что не так, буду весьма благодарен.
	
		
			
		
		
	
				
			заменить в документе все строки вида {a1|b2|c3|etc} на один из элементов разделенных "|" в скобках, хотелось бы сделать одним регекспом.
т.е. {a1|b2|c3|etc} -> убрать {} -> split '\|' -> rand
		PHP:
	
	$msg = file("msg.txt");
function rand_msg($msg) {
	$res_msg = "";
	foreach ($msg as $st) { 
		preg_replace_callback("|(\{[^\}]+\})|", 'rand_elem', $st);
		$res_msg = $res_msg . $st;
		//$sites=$sites[rand(0, count($sites) - 1)];
	}
	return $res_msg;
}
function rand_elem($m) {
	preg_replace("|\{|", ' ', $m[1]);
	preg_replace("|\}|", ' ', $m[1]);
	$sp = split('\|', $m[1]);
	
	$res = $sp[rand(0, count($sp)-1)];
	echo $res;
	return $res;
}
	Подскажите плз, что не так, буду весьма благодарен.