Есть переменная, содержащее строку. Нужно узнать, заканчивается ли эта строка определенным словом, и если это так, то удалить это последнее слово. Таких слов в строке может быть несколько. Но нужно удалить только одно слово, только последнее вхождение и только на последнем месте в строке. Как это сделать?
Пример 1. Ищем слово "and" в строке "в лесу родилась елочка and". В результате должна получиться строка "в лесу родилась елочка".
Пример 2. Ищем слово "and" в строке "в лесу and родилась елочка". В результате должна получиться та же строка "в лесу and родилась елочка".
Пример 3. Ищем слово "and" в строке "в лесу and родилась елочка and". В результате должна получиться строка "в лесу and родилась елочка".
Спустя 8 минут, 11 секунд (19.03.2010 - 14:17) waldicom написал(а):
substr(), strrpos() и оператор сравнения помогут...
Спустя 40 минут, 5 секунд (19.03.2010 - 14:57) aliputin написал(а):
Делаю так:
$str2 = substr($str_original, -3);
if ($str2=='and'){
$str_original=substr_replace($str_original, '', -3);
}
Кажется, работает. Поправьте, если я не прав.
$str2 = substr($str_original, -3);
if ($str2=='and'){
$str_original=substr_replace($str_original, '', -3);
}
Кажется, работает. Поправьте, если я не прав.
Спустя 5 минут, 40 секунд (19.03.2010 - 15:03) sergeiss написал(а):
Сначала сделай $str2=trim( $str2 ); иначе любые управляющие символы или пробелы в конце строки тебе испортят всё.
Вопрос: а что за задача такая изначально, что надо and удалять?
Вопрос: а что за задача такая изначально, что надо and удалять?
Спустя 23 минуты, 2 секунды (19.03.2010 - 15:26) aliputin написал(а):
Есть несколько функций, в которых есть запросы к базе данных. Я решил написать отдельную функцию fdb () для этого, а из остальных функций просто вызывать fdb (), передавая нужные параметры.
Эта функция формирует sql-запрос на основе принятых параметров. В числе этих параметров есть предложение where, в котором могут быть эти самые and'ы. В некоторых случаях в конце вылазит лишний and.
Вот такой акробатикой я занимаюсь. Осваиваю PHP уже целую неделю.
Эта функция формирует sql-запрос на основе принятых параметров. В числе этих параметров есть предложение where, в котором могут быть эти самые and'ы. В некоторых случаях в конце вылазит лишний and.
Вот такой акробатикой я занимаюсь. Осваиваю PHP уже целую неделю.
Спустя 14 минут, 27 секунд (19.03.2010 - 15:40) trieren написал(а):
можно это сделать с помощью регулярных выражений
вроде так:
вроде так:
preg_replace("/(.*)and$/", "\\1", $str);
Спустя 27 минут, 37 секунд (19.03.2010 - 16:08) sergeiss написал(а):
Цитата (aliputin @ 19.03.2010 - 16:26) |
Эта функция формирует sql-запрос на основе принятых параметров. В числе этих параметров есть предложение where, в котором могут быть эти самые and'ы. В некоторых случаях в конце вылазит лишний and. |
Извращенец!!!

1. Объявляем и формируем массив, состоящий из элементов, которые входят в WHERE.
2. Объединяем их функцией implode.
Пример:
$where=array();
if( ..условие1.. ) $where[]=" 'слово1' ";
if( ..условие2.. ) $where[]=" '$peremennaya_is_formy' ";
if .....
// объединяем все условия
$where_list=implode( ' and ', $where);
Вот и всё. Никаких лишних AND нету...
Спустя 2 минуты, 58 секунд (19.03.2010 - 16:11) waldicom написал(а):
а я просто сразу после WHERE пишу 1=1 ...
А потом уже у каждого условия свой and
А потом уже у каждого условия свой and
Спустя 56 минут, 47 секунд (19.03.2010 - 17:08) Guest написал(а):
Спасибо, ребята.
Спустя 2 минуты, 55 секунд (19.03.2010 - 17:11) aliputin написал(а):
Ваши советы решили мой вопрос.