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 :: str_replace

 PHP.SU

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


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

> Без описания
DemoN1810
Отправлено: 05 Января, 2016 - 06:48:20
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




В базе есть такие колонки (см. фото), пользователь вводит любое значение из левой колонки и ему показывается значение правой колонки, есть массив ключ=>значение, где ключ - значение в базе, а значение - значение, на которое нужно заменить с помощью str_replace, но заранее неизвестно, что ввёл пользователь, и поэтому str_replace заменяет один ключ на все значения, а мне так не надо; как правильно сделать?
Прикреплено изображение
Снимок экрана 2016-01-05 в 10.34.09.png
 
 Top
Viper
Отправлено: 05 Января, 2016 - 09:01:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Как-то с трудом понятно, что вам нужно, но скорее всего in_array()
Либо циклом по массиву и в нём preg_match() если уж совсем тяжело.

PS! М.б. стоит написать что есть и что хотите получить?!


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DemoN1810
Отправлено: 05 Января, 2016 - 10:19:21
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Viper пишет:
стоит написать что есть и что хотите получить?!
это чат-бот, есть функции, если собеседник написал например "курс валют" из базы бы бралось %COURSE% и заменялась на соответствующую функцию, в данном примере функцию парсера центробанка
 
 Top
Viper
Отправлено: 05 Января, 2016 - 11:36:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




DemoN1810 пишет:
если собеседник написал например "курс валют" из базы бы бралось %COURSE% и заменялась на соответствующую функцию
как-то у вас совсем сложно реализация задумана.

Выбрали из таблицы имя функции и запустили. Зачем какие-то замены?

например:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `cmd` FROM `table` WHERE `keyword` = 'курс валют';


Далее просто вызываете функцию course. Либо парсер с нужными параметрами.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
ytrewq123
Отправлено: 05 Января, 2016 - 11:36:33
Post Id


Посетитель


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


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




Я конечно только учуся! И возможно чего-то не понимаю. Но по моему можно так.
Написать СВИЧ и тогда при определённом значении из базы. Задействовать нужную функцию.

PHP:
скопировать код в буфер обмена
  1.  
  2. switch($str['iz_bazy']){
  3.     case '%COURSE%' : function dengi();break;
  4.     case '%WIKI%' : function znanija();break;
  5. }
  6.  
 
 Top
DemoN1810
Отправлено: 05 Января, 2016 - 12:00:12
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Viper пишет:
Выбрали из таблицы имя функции и запустили.
а я часто вижу в кодах например %USERNAME%, который меняется на имя, можно в вордпрессе посмотреть, там тоже это есть насколько помню
 
 Top
DemoN1810
Отправлено: 05 Января, 2016 - 14:09:58
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Viper пишет:
Выбрали из таблицы имя функции и запустили.
проверил, не работает, даже под переменную замаскировал
PHP:
скопировать код в буфер обмена
  1. function wiki() {
  2. }
  3. $wiki="wiki";
и вызываю как echo $wiki()
 
 Top
Hidalgo
Отправлено: 05 Января, 2016 - 17:04:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


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




DemoN1810 пишет:
Viper пишет:
Выбрали из таблицы имя функции и запустили.
а я часто вижу в кодах например %USERNAME%, который меняется на имя, можно в вордпрессе посмотреть, там тоже это есть насколько помню

При чем тут вордпрес? У него там шаблонизатор работает, а у вас свитч зачем то.
Товарищ Viper вам уже правильный ответ дал.
 
 Top
DemoN1810
Отправлено: 06 Января, 2016 - 06:17:58
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Hidalgo пишет:
а у вас свитч зачем то. Товарищ Viper вам уже правильный ответ дал.
нету у меня свитча, а вариант випера не подходит, потому что это чат-бот и он не только из функций берёт ответы, а ещё и из самой базы
 
 Top
Viper
Отправлено: 06 Января, 2016 - 10:04:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




DemoN1810 пишет:
и он не только из функций берёт ответы, а ещё и из самой базы

вы сами себе противоречите
DemoN1810 пишет:
из базы бы бралось %COURSE% и заменялась на соответствующую функцию

PHP:
скопировать код в буфер обмена
  1. class Parse {
  2.         // Бот запускает эту функцию и передает ключевое слово.
  3.         public static function run($keyword) {
  4.                 if (!empty($keyword)) {
  5.                         // Массив с ключевыми словами и функциями из базы данных.
  6.                         $func_array = array(
  7.                                 'itchy'    => 'чух',
  8.                                 'scratchy' => 'сверблячка',
  9.                                 'homer'    => 'Гомэр'
  10.                         );
  11.  
  12.                         foreach ($func_array as $func => $word) {
  13.                                 if ($keyword == $word) {
  14.                                         if (method_exists('Parse', $func)) {
  15.                                                 return self::$func();
  16.                                         }
  17.                                 }
  18.                         }
  19.                 }
  20.  
  21.                 return false;
  22.         }
  23.  
  24.         public static function itchy() {
  25.                 return 'Запустили функцию ' . __FUNCTION__ . '().';
  26.         }
  27.  
  28.         public static function scratchy() {
  29.                 return 'Запустили функцию ' . __FUNCTION__ . '().';
  30.         }
  31.  
  32.         public static function homer() {
  33.                 return 'Запустили функцию ' . __FUNCTION__ . '().';
  34.         }
  35. }
  36.  
  37. $parser = new Parse;
  38. echo $parser::run('чух');
  39. echo $parser::run('Гомэр');


Так понятнее?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DemoN1810
Отправлено: 06 Января, 2016 - 12:00:55
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Viper пишет:
вы сами себе противоречите
вовсе нет, не буду же я каждый день например изменять в базе курс валют или новости, поэтому надо хоть как-нибудь отделить функции парсеров от обычных ответов в базе
 
 Top
Viper
Отправлено: 06 Января, 2016 - 16:24:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




DemoN1810 пишет:
вовсе нет, не буду же я каждый день например изменять в базе курс валют или новости, поэтому надо хоть как-нибудь отделить функции парсеров от обычных ответов в базе
вы сами себя запутали уже! Перечитайте какую ахинею вы написали, может станет понятно.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DemoN1810
Отправлено: 06 Января, 2016 - 17:38:12
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Viper пишет:
вы сами себя запутали уже! Перечитайте какую ахинею вы написали, может станет понятно.
таки и вправду не буду же я так делать, а основные ответы надо в базе держать, так удобнее
 
 Top
Prizma
Отправлено: 07 Января, 2016 - 09:48:36
Post Id



Посетитель


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


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




DemoN1810 пишет:
вовсе нет, не буду же я каждый день например изменять в базе курс валют или новости, поэтому надо хоть как-нибудь отделить функции парсеров от обычных ответов в базе
DemoN1810 пишет:
таки и вправду не буду же я так делать, а основные ответы надо в базе держать, так удобнее

Типа ты после каждого запроса пользователя будешь парсить сайт центробанка или ММВБ чтобы написать актуальный курс? вместо того, чтобы через cron сделать это в автоматическом режиме и держать в базе всегда актуальное значение.
DemoN1810 пишет:
это чат-бот, есть функции, если собеседник написал например "курс валют" из базы бы бралось %COURSE% и заменялась на соответствующую функцию, в данном примере функцию парсера центробанка

К слову, я обслуживаю несколько интернет магазинов и пересчет из валют идет по курсу цб, курс обновляется в рабочии дни в 15:00 и 17:00 (иногда бывают задержки на цб) и этого вполне достаточно для поддержки актуальности цен.



DemoN1810 пишет:
а я часто вижу в кодах например %USERNAME%, который меняется на имя, можно в вордпрессе посмотреть, там тоже это есть насколько помню

улыбнуло)
 
My status
 Top
DemoN1810
Отправлено: 07 Января, 2016 - 14:10:30
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2016  


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




Prizma пишет:
держать в базе всегда актуальное значение.
это для цб только одну колонку отвести, а новости, а анекдоты, а википедия вконце концов?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB