[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление подстроки из строки
MichaelPak
Допустим есть строка
$str =" 123 456 789";

и под строка:
$str2 = "456";

Нужно удалить подстроку из строки, чтобы получилась строка:
$result = " 123 789":

Делал так:
$patterns = '';
$replacements = " ".$str2;
$result = preg_replace($patterns, $replacements, $str);

но получается пустая строка.



Спустя 9 минут, 48 секунд (15.09.2011 - 18:31) caballero написал(а):
str_replace($str2,"",$str)

Спустя 2 минуты, 42 секунды (15.09.2011 - 18:34) MichaelPak написал(а):
то есть вместо preg_replace использовать str replace?

Спустя 3 минуты, 14 секунд (15.09.2011 - 18:37) bodja написал(а):
Вариант 1
list ($s1,$s2,$s3) = explode (" ",$str);
echo $s1.' '.$s3;


Вариант 2
$s = explode (" ",$str);
echo $s[0].' '.$s[2];


Вариант 3
если изветно содержание чего удалять
$s=str_replace($s2,"",$str);
echo $s;


Можно и на регулярках,думаю народ более знающий подскажет.

Спустя 7 минут, 28 секунд (15.09.2011 - 18:44) caballero написал(а):
Цитата
то есть вместо preg_replace использовать str replace?


разумеется
на фига там регулярки


нужно доки изучать а не спрашивать каждый чих на форуме
тут вместо простой функции могут целый фреймворк насоветовать

Спустя 1 час, 51 минута, 24 секунды (15.09.2011 - 20:36) l@pteff написал(а):
Имхо, preg_replace() ничем не хуже:

/*
Если известны удаляемые цифры
*/

$str =" 123 456 789";
echo preg_replace('#456#', '', $str);



/*
Если удаляемые цифры не известны
*/

$str =" 123 456 789";
$str1=preg_match_all('#^\s(\d{3,})\s(\d{3,})#', $str, $matches);
$a=$matches[2][0];
echo preg_replace("#$a#", '', $str);

Спустя 3 минуты, 57 секунд (15.09.2011 - 20:40) inpost написал(а):
l@pteff
Ну а ты сам попробуй, разницу в производительности посмотри smile.gif str_replace как раз для этого существует.

MichaelPak
preg - работа по шаблону, шаблон пишется по регулярному выражению, когда ты не уверен в порядке и в содержании. Допустим: 5 любых символов после слова из 5-и букв, а когда у тебя всё четко, то так и надо, через str_replace.

Спустя 2 часа, 8 минут, 44 секунды (15.09.2011 - 22:48) l@pteff написал(а):
Действительно, разница существенная:
0,014109 сек. при использовании регулярок
0,000232 сек. при использовании str_replace.
MichaelPak, твой пример без регулярок:

/*
Если известны удаляемые цифры
*/

$str =" 123 456 789";
echo str_replace('456', '', $str);



/*
Если удаляемые цифры не известны
*/

$str =" 123 456 789";
echo substr_replace($str, '', 5, 4);

Спустя 5 месяцев, 26 дней, 16 часов, 44 минуты, 30 секунд (12.03.2012 - 15:33) Andreyua написал(а):
Цитата (l@pteff @ 15.09.2011 - 19:48)

/*
Если известны удаляемые цифры
*/

$str =" 123 456 789";
echo str_replace('456', '', $str);




А если строка $str = " 123 456 456 789";
и нужно удалить только один раз ?

Спустя 7 минут, 51 секунда (12.03.2012 - 15:41) Andreyua написал(а):
И без регулярок

Спустя 32 минуты, 30 секунд (12.03.2012 - 16:13) Winston написал(а):
http://ua2.php.net/manual/ru/function.str-replace.php смотри последний аргумент - $count

Спустя 17 минут, 35 секунд (12.03.2012 - 16:31) Commander Keen написал(а):
Цитата
на фига там регулярки


нужно доки изучать а не спрашивать каждый чих на форуме
тут вместо простой функции могут целый фреймворк насоветовать


Полностью поддерживаю. Регулярные выражения нужны только там, где они нужны. Это как рекурсии, вещь вроде и удобная, но в то же время достаточно "опасная". Мне уже начинает казаться, что здесь люди тыкают регулярками туда-сюда, чисто из за того, что хотят сказать: - "OMG! Я знаю, это такое!" и "Регулярки - это круто!". <<-- если такие есть, то это плохо. Круто не регулярки всюду тыкать, а институты с красным дипломом оканчивать. Круто - это когда интерпретатор не захлёбывается регулярками и рекурсиями, а выполняет всё быстро и без проблем. Ну накипело.

А ещё тут видел несколько раз темы типа: "Помогите составить регулярку". Так вот в этих темах люди отвечают примерно вот так: "А попробуй вот так!", "А попробуй вот эдак!" )) Такое ощущение, что кто-то перебирает все возможные варианты, который показывает гугл )) А в RegEx Buddy проверить - совести не хватает biggrin.gif

Спустя 2 минуты, 52 секунды (12.03.2012 - 16:34) Andreyua написал(а):
Цитата (Winston @ 12.03.2012 - 13:13)
http://ua2.php.net/manual/ru/function.str-replace.php смотри последний аргумент - $count

count

Если передан, то будет установлен в количество произведенных замен.

Он только выводит сколько замен было, задавать я так понял нельзя

Спустя 36 минут, 37 секунд (12.03.2012 - 17:10) Winston написал(а):
Цитата (Andreyua @ 12.03.2012 - 15:34)
Он только выводит сколько замен было, задавать я так понял нельзя

Тьфу точно, протупил...
Ну тогда использовать preg_replace и передавать 4 параметр.

Спустя 4 минуты, 26 секунд (12.03.2012 - 17:15) Andreyua написал(а):
А может if быстрее и производительней будет ?

Спустя 5 минут, 30 секунд (12.03.2012 - 17:20) Winston написал(а):
Цитата (Andreyua @ 12.03.2012 - 16:15)
А может if быстрее и производительней будет ?

И как ты это себе представляешь?
Быстрый ответ:

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