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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Dark-def
Отправлено: 04 Марта, 2013 - 22:32:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




Помогите пожалуйста. Нужно дописать в строку подстроку, но после определенного места. То-есть я функцией stripos() нахожу место, с которого мне нужно дописать. Но то ли я дурак, то ли в мануале не нашел нужной мне функции...


-----
while(true); - // И пусть весь мир подождет
 
 Top
LIME
Отправлено: 04 Марта, 2013 - 22:47:44
Post Id


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


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


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




в общем случае можно решить регуляркой
поконкретнее задачу...с текстом
(Добавление)
Dark-def пишет:
Но то ли я дурак
нет))...обработка текста не самая тривиальная задача...хотя от ситуации
 
 Top
Dark-def
Отправлено: 04 Марта, 2013 - 22:55:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




LIME пишет:
в общем случае можно решить регуляркой
поконкретнее задачу...с текстом


В общем, есть SQL запрос в переменной
PHP:
скопировать код в буфер обмена
  1. $big_query = "SELECT * FROM $page LIMIT 10";

который передается другому методу, который должен дописать в него сортировку.
Получается так, что дописать в конец и начало строки нельзя, а только в середину перед LIMIT...
Метод, получив переменную находит место куда нужно дописать ORDER BY c помощью
PHP:
скопировать код в буфер обмена
  1. $replacement = stripos($big_query, "LIMIT");

получаю число, и тут ступор ((
Суть задачи, просто вписать перед ORDER BY `title` ASC перед LIMIT 10


-----
while(true); - // И пусть весь мир подождет
 
 Top
LIME
Отправлено: 04 Марта, 2013 - 23:07:08
Post Id


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


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


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




нихрена не понял....дам общий вариант если голова есть на плечах сообразишь
PHP:
скопировать код в буфер обмена
  1. $order=($var)?' ORDER BY `title` ':'';
  2. $big_query = "SELECT * FROM $page$order LIMIT 10";
 
 Top
NeuroZ
Отправлено: 04 Марта, 2013 - 23:09:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




Немного топорно, но первое, что пришло в голову
CODE (htmlphp):
скопировать код в буфер обмена
  1. substr_replace($big_query, "ORDER BY `title` ASC ", stripos($big_query, "LIMIT")).mb_substr($big_query, stripos($big_query, "LIMIT"));

p.s. Можно сделать изящней

(Отредактировано автором: 04 Марта, 2013 - 23:10:14)

 
 Top
LIME
Отправлено: 04 Марта, 2013 - 23:10:35
Post Id


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


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


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




NeuroZ сотри сейчазже
(Добавление)
NeuroZ это ужасно...потренеруйся прогить еще
 
 Top
NeuroZ
Отправлено: 04 Марта, 2013 - 23:13:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




LIME пишет:
NeuroZ сотри сейчазже
(Добавление)
NeuroZ это ужасно...потренеруйся прогить еще

Радость
Я так и написал: ТОПОРНО Улыбка
Мне просто не хочется вникать...

(Отредактировано автором: 04 Марта, 2013 - 23:13:31)

 
 Top
LIME
Отправлено: 04 Марта, 2013 - 23:14:57
Post Id


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


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


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




NeuroZ мне кажется твое решение гораздо больше требует вникания
хотя все просто
либо есть ордер либо нет
 
 Top
NeuroZ
Отправлено: 04 Марта, 2013 - 23:18:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




LIME пишет:
NeuroZ мне кажется твое решение гораздо больше требует вникания
хотя все просто
либо есть ордер либо нет

Я не спорю, что твой вариант во много раз выигрывает в производительности и читаемости Улыбка
Мой - это так))) скорее демонстрация функций)
 
 Top
Dark-def
Отправлено: 04 Марта, 2013 - 23:18:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




PHP:
скопировать код в буфер обмена
  1. $order=($var)?' ORDER BY `title` ':'';
  2. $big_query = "SELECT * FROM $page$order LIMIT 10";
[/quote]

Беда в том, что запросы генерируются динамически и в метод прилетают абсолютно разные, с разными параметрами.
То-есть я не могу взять и переписать запрос по новому, нужно толкатся от старого...


-----
while(true); - // И пусть весь мир подождет
 
 Top
NeuroZ
Отправлено: 04 Марта, 2013 - 23:23:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




Насвистываю
Вот теперь правда не знаю как без replace обойтись...

(Отредактировано автором: 04 Марта, 2013 - 23:23:56)

 
 Top
avtor.fox
Отправлено: 04 Марта, 2013 - 23:23:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




Dark-def, пока не будет исходников - думайте сами.
А так, как самый ужасный из предложенных вариантов -
PHP:
скопировать код в буфер обмена
  1. preg_replace('#LIMIT#', 'ORDER BY `title` ASC LIMIT', var); //Над модификаторами думайте
 
 Top
LIME
Отправлено: 04 Марта, 2013 - 23:24:02
Post Id


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


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


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




Dark-def твои проблемы ...думай...либо подробнее дай инфу
NeuroZ не ссы Невроз))
не бойся выглядеть глупым
лучше громко пернуть чем тихонечко набздеть)))
вот ты и увидел вариант....еще раз тебя поправят еще раз научишся))
так держать)))
 
 Top
Dark-def
Отправлено: 04 Марта, 2013 - 23:28:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




NeuroZ пишет:
Немного топорно, но первое, что пришло в голову
CODE (htmlphp):
скопировать код в буфер обмена
  1. substr_replace($big_query, "ORDER BY `title` ASC ", stripos($big_query, "LIMIT")).mb_substr($big_query, stripos($big_query, "LIMIT"));

p.s. Можно сделать изящней


PHP:
скопировать код в буфер обмена
  1. $replacement = stripos($big_query, "LIMIT");
  2. $big_query = substr_replace($big_query, "ORDER BY `title` ASC" , $replacement);

вот так получилось, но не совсем как нужно. Беда в том, что функция заменяет, а мне нужно дописать...

(Отредактировано автором: 04 Марта, 2013 - 23:30:03)



-----
while(true); - // И пусть весь мир подождет
 
 Top
LIME
Отправлено: 04 Марта, 2013 - 23:32:03
Post Id


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


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


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




умываю руки
(Добавление)
извращенцы никогда не умирают
(Добавление)
avtor.fox стыдно должно быть....гуру мля))
 
 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