$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
Вариант 2
Вариант 3
если изветно содержание чего удалять
Можно и на регулярках,думаю народ более знающий подскажет.
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
Ну а ты сам попробуй, разницу в производительности посмотри str_replace как раз для этого существует.
MichaelPak
preg - работа по шаблону, шаблон пишется по регулярному выражению, когда ты не уверен в порядке и в содержании. Допустим: 5 любых символов после слова из 5-и букв, а когда у тебя всё четко, то так и надо, через str_replace.
Ну а ты сам попробуй, разницу в производительности посмотри 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, твой пример без регулярок:
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 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 проверить - совести не хватает
Спустя 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 быстрее и производительней будет ? |
И как ты это себе представляешь?