bulo4ka
Новичок
Всем привет. В очередной раз столкнулся с проблемой реализации разметки для сайта (на подобие bbcode).
На этот раз с картинками и ссылками на них
Как и в случае с таблицам, задумка простая: определенные коды преобразовывать в html.
Все просто, но не совсем. Возникла загвоздка.
Например переменная $string такова:
Обрабатывается как:
Что куда вставляется, думаю что видно...
Хотел реализовать это через preg_match_all, но столкнулся с тем, что нужно еще сделать массив по разделителю "|".
Все бы хорошо, но в первом случае необходимо вытащить переменные после "photo-", разделяемые нижним подчеркиванием "_".
А во втором случае разделить переменные по ";".
С такой вложенностью в массиве натыкаюсь только на синтаксические ошибки, отчего и закипела голова.
Такое преобразование приводит лишь к
Каким образом можо сделать описанные выше массивы в массиве или можно как-нибудь обойтись без них?
На этот раз с картинками и ссылками на них

Как и в случае с таблицам, задумка простая: определенные коды преобразовывать в 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 >