1.Есть регулярное выражение вывода из строки ID расположенных в таком формате [ID] 1 [/ID];
2.Есть SQL запрос, который берёт из базы ну к примеру users имя пользователя;
3.Нужно сделать регулярное выражение которое заменяет [ID] 1 [/ID] на имя пользователя в формате «ID:1 – Вася; ID:2 – Петя»;
Как это можно было бы осуществить ? Заранее благодарю за ответ!
P.S.:> 1 и 2 пункты уже сделал, а вот третий - не могу понять как осуществить, циклом, циклом в цикле или еще что то. В общем помогите пожалуйста, перый раз в практике с этим столкнулся
Спустя 59 минут, 26 секунд (9.12.2010 - 10:23) Slays написал(а):
Спустя 8 минут, 32 секунды (9.12.2010 - 10:32) kirik написал(а):
Тут зарыта медвежья услуга
$arr = array(
1 => 'Vasya',
2 => 'Petr'
);
$txt = '[id]1[/id] let\'s go to get high!';
preg_match('#\[id\]\s?(\d+?)\s?\[/id\]#ie', $txt, $o);
echo str_replace($o[0], $arr[$o[1]], $txt) . "\n";
// or
echo preg_replace('#\[id\]\s?(\d+?)\s?\[/id\]#ie', '$arr[\\1]', $txt);
Спустя 15 минут, 4 секунды (9.12.2010 - 10:47) UnWind написал(а):
kirik
Благодарю!)
Благодарю!)
Спустя 8 минут, 35 секунд (9.12.2010 - 10:55) kirik написал(а):
UnWind
>> (\d+?) тут вопросительный знак не нужен.
>> (\d+?) тут вопросительный знак не нужен.
Спустя 2 минуты, 56 секунд (9.12.2010 - 10:58) UnWind написал(а):
kirik
Хм а почему вот этот код
Выводит
Хм а почему вот этот код
$arr = array(
1 => 'Vasya',
2 => 'Petr'
);
$txt = '[id]1[/id] шайтан мордатый, а [id]2[/id] нефиговый кодер!';
preg_match('#\[id\]\s?(\d+)\s?\[/id\]#ie', $txt, $o);
echo str_replace($o[0], $arr[$o[1]], $txt) . "\n";
// or
echo preg_replace('#\[id\]\s?(\d+)\s?\[/id\]#ie', '$arr[\\1]', $txt);
Выводит
Цитата |
Vasya шайтан мордатый, а [id]2[/id] нефиговый кодер! Vasya шайтан мордатый, а Petr нефиговый кодер! |
И вообще для чего нужен сдесь str_Replace ???
Спустя 20 минут, 52 секунды (9.12.2010 - 11:19) kovaldm написал(а):
kirik
Вот тебе и медвежья услуга.)))
Вот тебе и медвежья услуга.)))
Спустя 7 минут, 23 секунды (9.12.2010 - 11:26) kirik написал(а):
Цитата (kovaldm @ 9.12.2010 - 03:19) |
Вот тебе и медвежья услуга.))) |
И не говори
Цитата (UnWind @ 9.12.2010 - 02:58) |
И вообще для чего нужен сдесь str_Replace ??? |
Там же серым по белому написано // or. Тоесть или этот код, или этот.
Тот который с str_replace работает сейчас только с одним значением. Второй же - работает с множественными совпадениями.
Спустя 2 часа, 39 минут, 22 секунды (9.12.2010 - 14:06) UnWind написал(а):
kirik
Хорошо, спасибо за объяснения)
Честно говоря в английском полный 0.
А вот вопрос как сделать еще такую фишку, у меня же по идее там если вписан id - то он вставляется в sql запрос, а далее уже только вывод на экран идет, вот я сейчас много вариантов перепробывал с циклами и так далее - у меня получается, что выводиться 1 id из базы, далее идет просто повтор замен одного и того же сколько записей в базе.
А по идее должно быть так:
Скрипт находит первый BBCode, после чего выбирает id, вставляет в запрос, BB код заменяется на изображение внизу подписанное именем, находиться следующий BBCode и так далее.
А если я исполню preg_replace к примеру, он сразу же заменит все значения, а регулярное выражение которое парсит из BB кодов id'шники тупо вставят массив в SQL запрос. Меня вот больше интересует как вот это сделать. Если можете, помогите пожалуйста)
Заранее благодарю!)
Хорошо, спасибо за объяснения)
Честно говоря в английском полный 0.
А вот вопрос как сделать еще такую фишку, у меня же по идее там если вписан id - то он вставляется в sql запрос, а далее уже только вывод на экран идет, вот я сейчас много вариантов перепробывал с циклами и так далее - у меня получается, что выводиться 1 id из базы, далее идет просто повтор замен одного и того же сколько записей в базе.
А по идее должно быть так:
Скрипт находит первый BBCode, после чего выбирает id, вставляет в запрос, BB код заменяется на изображение внизу подписанное именем, находиться следующий BBCode и так далее.
А если я исполню preg_replace к примеру, он сразу же заменит все значения, а регулярное выражение которое парсит из BB кодов id'шники тупо вставят массив в SQL запрос. Меня вот больше интересует как вот это сделать. Если можете, помогите пожалуйста)
Заранее благодарю!)
Спустя 38 минут, 1 секунда (9.12.2010 - 14:44) twin написал(а):
Цитата |
Честно говоря в английском полный 0. |
а причем тут английский Это же логическое "или"
По тз ничего не ясно, лучше примерчик. Что есть и что должно получиться.
Подозреваю, что без стека тут не обойтись.
Спустя 2 часа, 10 минут, 16 секунд (9.12.2010 - 16:54) UnWind написал(а):
twin
Ну в общем я не помню, что такое OR)
Помню что было в операторе LIKE в SQL для объединения запроса как оператор или ставился OR, и все, больше не от куда не помню.
А в PHP логический оператор или - || )))
В общем - мне показывать уже нечего, так как я код удалил со психу :(
Но объясню понятней.
Что есть BB код ? - какие то метки которые в последствие формируются в теги html.
У меня BB код ориентирован на вставку изображения в контент с красивой рамочкой, названием и при клике на него с вылетом в popup окне и его описанием.
Соотвественно что бы все это произошло, эти все описания должны где то браться, для этого я создал таблицу в базе данных ps_manager (Print Screen Manager).
Поля таблицы: id, user_id, title, label, description, url.
Идем далее - соотвественно поле user_id - кто добавил изображение, title - название изображения, label - метки, description - описание изображения.
Когда пользовать вставляет BB код, значение id заключенное между метками, отправляется в SQL запрос при помощи переменной $PSid
id скриншота попадает в SQL запрос
Далее, по идее вся информация из базы данных вставляется в html код, ну пусть хотя бы такой в качестве примера:
И все, далее соотвественно все по такому же принцыпу и соотвественно в самом тексте пользователя таких BB кодов может быть море, по этому я и не понимаю как это сделать, а учиться к сожалению времени нет((( 16 числа проект сдавать, а у меня все сделанно кроме этого BB кода, а он по сути обязателен.
Я просто в регулярных выражениях так сказать 0, использую их очень и очень редко, в основном все делаю при помощи SQL запросов или готовых классов/функций и так далее.
А вот тут в общем пригодилось и я как бы в лужу сел. :(
Заранее благодарю если сможете помоч!
Ну в общем я не помню, что такое OR)
Помню что было в операторе LIKE в SQL для объединения запроса как оператор или ставился OR, и все, больше не от куда не помню.
А в PHP логический оператор или - || )))
В общем - мне показывать уже нечего, так как я код удалил со психу :(
Но объясню понятней.
Что есть BB код ? - какие то метки которые в последствие формируются в теги html.
У меня BB код ориентирован на вставку изображения в контент с красивой рамочкой, названием и при клике на него с вылетом в popup окне и его описанием.
Соотвественно что бы все это произошло, эти все описания должны где то браться, для этого я создал таблицу в базе данных ps_manager (Print Screen Manager).
Поля таблицы: id, user_id, title, label, description, url.
Идем далее - соотвественно поле user_id - кто добавил изображение, title - название изображения, label - метки, description - описание изображения.
Когда пользовать вставляет BB код, значение id заключенное между метками, отправляется в SQL запрос при помощи переменной $PSid
[PS] id скриншота который он хочет вставить [/PS]
id скриншота попадает в SQL запрос
SELECT r.id, r.title, r.label, r.url r.description,r.user_id f.login
FROM users f
JOIN ps_manager r ON r.id
WHERE r.user_id LIKE f.id AND r.id LIKE q'".$PSid."';
COMMIT;
Далее, по идее вся информация из базы данных вставляется в html код, ну пусть хотя бы такой в качестве примера:
<img src="'.$PS['url'].'" alt="'.$PS['title'].'" title="'.mysql_escape_string($PS['description']).'">
И все, далее соотвественно все по такому же принцыпу и соотвественно в самом тексте пользователя таких BB кодов может быть море, по этому я и не понимаю как это сделать, а учиться к сожалению времени нет((( 16 числа проект сдавать, а у меня все сделанно кроме этого BB кода, а он по сути обязателен.
Я просто в регулярных выражениях так сказать 0, использую их очень и очень редко, в основном все делаю при помощи SQL запросов или готовых классов/функций и так далее.
А вот тут в общем пригодилось и я как бы в лужу сел. :(
Заранее благодарю если сможете помоч!
Спустя 12 минут, 35 секунд (9.12.2010 - 17:07) twin написал(а):
UnWind
Цитата |
А в PHP логический оператор или - || ))) |
А разве никогда не видел конструкцию
or die();Открою тайну, or - это тоже самое, с чуть меньшим приоритетом.
По существу - kirik написал верный код, ты просто не смог применить правильно. Сейчас не могу, чуть позже напишу как надо, если не опередят (на что в тайне надеюсь) :)
Спустя 4 минуты, 22 секунды (9.12.2010 - 17:11) UnWind написал(а):
twin
А вот такую конструкцию встречал, но редко ей пользуюсь.
У меня код PHP вообще минималестичен, в основном делает все Oracle.
Хм. or die в общем прекращает выполнение программы если функция/условие выполнено не верно на сколько я помню.
Хорошо) Буду с нетерпением ждать твоего кода, как раз давно честно говоря хотел посмотреть. как только начал читать твой веб учебник.
И еще, можешь дать свой номер icq or skype
было бы интерестно побеседовать на досуге)
P.S.:> Все уже нашел, у меня семи знак, запросил авторизацию.
А вот такую конструкцию встречал, но редко ей пользуюсь.
У меня код PHP вообще минималестичен, в основном делает все Oracle.
Хм. or die в общем прекращает выполнение программы если функция/условие выполнено не верно на сколько я помню.
Хорошо) Буду с нетерпением ждать твоего кода, как раз давно честно говоря хотел посмотреть. как только начал читать твой веб учебник.
И еще, можешь дать свой номер icq or skype
было бы интерестно побеседовать на досуге)
P.S.:> Все уже нашел, у меня семи знак, запросил авторизацию.
Спустя 33 минуты, 23 секунды (9.12.2010 - 17:44) twin написал(а):
Цитата |
or die в общем прекращает выполнение программы если функция/условие выполнено не верно на сколько я помню. |
Не если, а или. Выполняется функция, или die.
Я не дома, позже отвечу.
Спустя 6 минут, 33 секунды (9.12.2010 - 17:51) UnWind написал(а):
twin
Не правильно выразился)
Да я уже спать собираюсь ложиться, на работе загоняли.
В общем - завтра буду в сети в аське.
Если успеешь сделать код - оставь его плиз в теме, завтра в аську тебе постучу)
Давай, хорошо отдохнуть после рабочего дня, я спать. Офф
Не правильно выразился)
Да я уже спать собираюсь ложиться, на работе загоняли.
В общем - завтра буду в сети в аське.
Если успеешь сделать код - оставь его плиз в теме, завтра в аську тебе постучу)
Давай, хорошо отдохнуть после рабочего дня, я спать. Офф
Спустя 16 часов, 58 минут, 59 секунд (10.12.2010 - 10:50) twin написал(а):
Вот где медведь то побывал)))
function createScrin($PSid)
{
$res = mysql_query("SELECT r.id, r.title, r.label, r.url r.description,r.user_id f.login
FROM users f
JOIN ps_manager r ON r.id
WHERE r.user_id LIKE f.id
AND r.id LIKE q'". (int)$PSid[1] ."'"
);
if(mysql_num_rows($res) > 0)
{
$PS = mysql_fetch_assoc($res);
return '<img src="'. htmlspecialchars($PS['url']).'"'
.' alt="'. htmlspecialchars($PS['title']).'"'
.' title="'. htmlspecialchars($PS['description']).'">';
}
else
return NULL;
}
$text = "Нужно настроить локальную сеть на этажах 3, 4 на схемах ниже
[PS]1[/PS] [PS]2[/PS] и поставить два маршрутизатора и файервола на 5-6
стых этажах так, как показанно на схемах ниже [PS]3[/PS] [PS]149[/PS]";
echo preg_replace_callback("#\[ps\](\d+)\[/ps\]#uis", 'createScrin', $text);
Спустя 4 минуты, 3 секунды (10.12.2010 - 10:54) twin написал(а):
Правда это очень нерационально. Если к экономии ресурса требования не жесткие - сойдет. Если критично, нужно в два прохода. Сначала собрать массив ID, вынуть все одним запросом и потом заменять.
Спустя 11 минут, 30 секунд (10.12.2010 - 11:06) UnWind написал(а):
twin
Спасибо большое!
Спасибо большое!
_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!