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;
}
Подскажите плз, что не так, буду весьма благодарен.