Множество массивов в preg_match_all или есть что-нибудь лушче?

bulo4ka

Новичок
Всем привет. В очередной раз столкнулся с проблемой реализации разметки для сайта (на подобие bbcode).
На этот раз с картинками и ссылками на них :(
Как и в случае с таблицам, задумка простая: определенные коды преобразовывать в html.
Все просто, но не совсем. Возникла загвоздка.

Например переменная $string такова:
PHP:
[[photo-123_222_888|300x200px;nolink;noborder|Example One]]
Обрабатывается как:
PHP:
<img style="width: 300px; height: 200px;" src="./uploads_user/123/888.jpg" title="Example One" alt="Example One" border="0">
Что куда вставляется, думаю что видно...

Хотел реализовать это через preg_match_all, но столкнулся с тем, что нужно еще сделать массив по разделителю "|".
Все бы хорошо, но в первом случае необходимо вытащить переменные после "photo-", разделяемые нижним подчеркиванием "_".
А во втором случае разделить переменные по ";".

С такой вложенностью в массиве натыкаюсь только на синтаксические ошибки, отчего и закипела голова.

PHP:
$open_table = preg_match_all('/\[\[/i', $string, $matches);
	  $close_table = preg_match_all('/\]\]/i', $string, $matches);
	  $total_tags = ( $open_table>$close_table ? $close_table : $open_table );
	  
	  if( $total_tags )
	  {
		$string = preg_replace('/\[\[/i', "<img", $string, $total_tags);
		$string = strrev(preg_replace('/\]\]/i', ">", strrev($string), $total_tags));
	  }
	  
	  return $string;
Такое преобразование приводит лишь к
PHP:
<img photo-123_222_888|300x200px;nolink;noborder|Example One >
Каким образом можо сделать описанные выше массивы в массиве или можно как-нибудь обойтись без них?
 
Сверху