Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обработка массива перед выводом


Автор: Loncaster 15.3.2008, 22:04
Эммм вообще есть массив следующей структуры
Код

array (
[0]
      ['event_title'] = 'blablabla'
[1] 
      ['event_title'] = 'blablabla'
}

и т.д.
Массив этот выводится в шаблоне через смарти

Код

{section name=lastEvent loop=$lastEvents}
{$lastEvents[lastEvent].event_title}<br/>


Вопрос в том, как перед выводом вырезать слеши из ивент_тайтла ? Т.е. я так понимаю это нужно сделать еще до того как определять смарти-переменную.

По идее можно было бы воспользоваться array_map , но тут ведь каждый элемент массива - тоже массив...

Как бы это так провернуть правильно без циклов лишьних? 

Автор: skyboy 15.3.2008, 22:29
чем не устраивает модификатор переменных http://www.smarty.net/manual/ru/language.modifier.replace.php в Smarty?

Автор: Loncaster 15.3.2008, 22:36
В принципе ничем, но не хотелось както усложнять визуально шаблоны для дизайнера)

Автор: SelenIT 15.3.2008, 22:36
Цитата(Loncaster @  15.3.2008,  22:04 Найти цитируемый пост)
перед выводом вырезать слеши

А что за слеши и как они там оказались?

Автор: skyboy 15.3.2008, 22:53
Цитата(SelenIT @  15.3.2008,  21:36 Найти цитируемый пост)
А что за слеши и как они там оказались? 

отличный и своевременный вопрос!
Loncaster, http://php.net/str_replace вполне себе принимает массив, как цель замены, и производит замену в каждом элементе массива 

Автор: SelenIT 15.3.2008, 23:37
skyboy, просто у меня возникло подозрение, что речь о magic_quotes_runtime. А массив как цель замены автору, имхо, не подходит - ему же нужно менять ключи, а не значения...

Автор: Loncaster 16.3.2008, 01:51
эм слеши попали туда после добавления инфы в БД. 
А массив является результатом выборки из бд. В этом массиве, каждый элемент является другим массивом, который представляет уже конкретную запись. 
Т.е. вот: 
Код

VAR 1
Array
(
    [0] => Array
        (
            [event_id] => 38
            [event_title] => 25 марта МОРЭ & РЭЛЬСЫ and Robots Don\'t Cry, Sky Hall
            [event_afisha] => 1892x_8c27ba80.jpg
            [event_description] => блаблаблабла
            [event_tags] => indie
            [event_date] => 2008-03-25 18:30:00
            [event_price] => 35
            [event_club] => 9
            [event_bands] => a:2:{i:0;s:2:"42";i:1;s:2:"44";}
            [club_title] => Sky Hall
            [club_id] => 9
            [newdate] => 25/03/2008, 18-30
        )
        [1] => Array
        (
            [event_id] => 38
            [event_title] => 25 марта МОРЭ & РЭЛЬСЫ and Robots Don\'t Cry, Sky Hall
            [event_afisha] => 1892x_8c27ba80.jpg
            [event_description] => блаблаблабла
            [event_tags] => indie
            [event_date] => 2008-03-25 18:30:00
            [event_price] => 35
            [event_club] => 9
            [event_bands] => a:2:{i:0;s:2:"42";i:1;s:2:"44";}
            [club_title] => Sky Hall
            [club_id] => 9
            [newdate] => 25/03/2008, 18-30
        )

)


Вот в event_title проскакивают слеши как видите..

Автор: awers 16.3.2008, 02:02
Это какая то интересная настройка mysql ... 

Автор: skyboy 16.3.2008, 02:42
Цитата(SelenIT @  15.3.2008,  22:37 Найти цитируемый пост)
skyboy, просто у меня возникло подозрение, что речь о magic_quotes_runtime

угу, ты молодец, что думаешь о причинах, а не о заплатках! 
похоже, тут и правда magic_quotes виноваты.

Автор: Feldmarschall 16.3.2008, 04:45
Loncaster, если ты ещё не сделал вывод из обсуждения выше, то говоря более конкретно, тебе надо сделать две вещи
1. Наладить работу с БД так, чтобы лишние слеши в неё не попадали. Прочитать можно здесь: http://phpfaq.ru/slashes
2. Почистить базу от от них один раз, а не делать это при каждом обращении к ней. Любым способом, который тебе покажется удобным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)