Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: замена ББ кода на блок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ex
Отправлено: 18 Августа, 2015 - 23:14:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Не знаю, мб заголовок темы написан не верно, но суть вопроса:
Есть файл item.php (в нем содерижиться штм код и контент, который тянется с бд в зависимости от полученного ид)
Есть форум. Если человек напишет [item=4] (цифра может быть любой), то этот код [item=4] должен замениться на содержимое файла item.php с учетом ид. То есть должно сгенерироватся контент в зависимости от цифры в бб коде и выдать его, что бы вместо бб кода вывело блок с файла item.php (и в 1 сообщении может быть несколько таких блоков)

(Отредактировано автором: 18 Августа, 2015 - 23:17:11)

 
 Top
andrewkard
Отправлено: 19 Августа, 2015 - 10:21:48
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Ex
Отслеживайте изменения INPUT, и если совпадение есть, делаете AJAX запрос на сервер и получаете нужный HTML, который будете менять по маске.
 
 Top
Ex
Отправлено: 19 Августа, 2015 - 14:00:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




andrewkard пишет:
Ex
Отслеживайте изменения INPUT, и если совпадение есть, делаете AJAX запрос на сервер и получаете нужный HTML, который будете менять по маске.

На скок я понял, вы предлагаете через javascript обрабатывать эти теги и заменять на нужный блок. Но я хочу чисто на пхп
 
 Top
andrewkard
Отправлено: 19 Августа, 2015 - 14:27:18
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Ex
Что то похожее на это?
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = 'Если человек напишет [item=4] (цифра может быть любой)';
  3. $arr_replace = array(
  4.     '[item=4]'=>'4 текст',
  5.     '[item=5]'=>'5 текст',
  6. );
  7. $pattern = '/\[\w+=\d+\]/';
  8. preg_match($pattern, $str, $matches);
  9. $text_search = $matches[0];
  10. $text_replace = $arr_replace[$text_search];
  11. $str = str_replace($text_search, $text_replace, $str);
  12. echo $str;
  13.  
 
 Top
Ex
Отправлено: 19 Августа, 2015 - 16:39:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




andrewkard пишет:
Ex
Что то похожее на это?
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = 'Если человек напишет [item=4] (цифра может быть любой)';
  3. $arr_replace = array(
  4.     '[item=4]'=>'4 текст',
  5.     '[item=5]'=>'5 текст',
  6. );
  7. $pattern = '/\[\w+=\d+\]/';
  8. preg_match($pattern, $str, $matches);
  9. $text_search = $matches[0];
  10. $text_replace = $arr_replace[$text_search];
  11. $str = str_replace($text_search, $text_replace, $str);
  12. echo $str;
  13.  


что то похожее на то что я пытался. Мб я плохо объяснил или что.
Сейчас я обернул файл (item.php) в функцию и что бы вызвать содержимое я прописую
getItem($id);

на самом форуме в обработке бб кодов этот бб код я хотел обработать так:
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('/\[item=(\d+)\]/', getItems("$1"), $text);

в итоге, оно передает нужную цифру, которую прописал юзер, но в виде текста.
Если я переформатирую через int или intal то это число стает 0. А если не обрабатывать через инт, то запрос к бд ничего ен возвращает, т.к. я ищу по ид, а оно приходит в формате текста
 
 Top
andrewkard
Отправлено: 19 Августа, 2015 - 17:09:07
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Ex
Вы выводили, что приходит в функцию?

функция preg_replace еще не отработала...

Вот так будет работать:
PHP:
скопировать код в буфер обмена
  1.  
  2. function getItems($key){
  3.     return (int)($key);
  4. }
  5.  
  6. $str = 'Если человек напишет [item=4] (цифра может быть любой)';
  7. $pattern = '/\[\w+=(\d+)\]/';
  8. preg_match($pattern, $str, $matches);
  9. $id = $matches[1];
  10.  
  11. echo preg_replace($pattern, getItems($id), $str);
  12.  
 
 Top
Ex
Отправлено: 19 Августа, 2015 - 17:21:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Тема закрыта, проблема решена Улыбка
PHP:
скопировать код в буфер обмена
  1. function get_item($ids) {
  2.         foreach ($ids as $key) {
  3.                 $return[] = getItems((int)$key,0);
  4.         }
  5.         return $return;
  6. }
  7. if (preg_match_all('/\[item=(\d+)\]/', $text, $matches)) {
  8.   $text = str_replace($matches[0], get_item($matches[1], null), $text);
  9. }
  10.  

(Отредактировано автором: 19 Августа, 2015 - 17:28:41)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB