[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: удалить из строки определенное последнее слово
aliputin
Как удалить из строки определенное последнее слово?

Есть переменная, содержащее строку. Нужно узнать, заканчивается ли эта строка определенным словом, и если это так, то удалить это последнее слово. Таких слов в строке может быть несколько. Но нужно удалить только одно слово, только последнее вхождение и только на последнем месте в строке. Как это сделать?

Пример 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);
}

Кажется, работает. Поправьте, если я не прав.

Спустя 5 минут, 40 секунд (19.03.2010 - 15:03) sergeiss написал(а):
Сначала сделай $str2=trim( $str2 ); иначе любые управляющие символы или пробелы в конце строки тебе испортят всё.

Вопрос: а что за задача такая изначально, что надо and удалять?

Спустя 23 минуты, 2 секунды (19.03.2010 - 15:26) aliputin написал(а):
Есть несколько функций, в которых есть запросы к базе данных. Я решил написать отдельную функцию fdb () для этого, а из остальных функций просто вызывать fdb (), передавая нужные параметры.

Эта функция формирует 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.

Извращенец!!! wink.gif Задавая вопрос, я примерно такого ответа и ожидал. Чтобы не было лишних ЭНДов, надо сделать всё проще. Намного проще.

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

Спустя 56 минут, 47 секунд (19.03.2010 - 17:08) Guest написал(а):
Спасибо, ребята.

Спустя 2 минуты, 55 секунд (19.03.2010 - 17:11) aliputin написал(а):
Ваши советы решили мой вопрос.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.