Нужно обработать переменную вырезав с нее кусок от символа ">" до символа ":" остальное оставить. Т.е. скрипту передается переменная, к примеру такая ">ТЕКСТ КОТОРЫЙ УБРАТЬ: Нужный текст". Как с помощью рнр удалить ">ТЕКСТ КОТОРЫЙ УБРАТЬ:" (включая символы > и :) и оставить только "Нужный текст"?
Через функцию split порезать и убрать начало до символа ":" не всегда правильно ввиду того что в переменной может и не присутствовать ":" либо присутствовать без символа ">" Надо что-то другое... Чтоб именно определяло что существует текст между ">" и ":" и удаляло этот текст вместе с символами.
Заранее спасибо.
Спустя 11 минут, 11 секунд (26.03.2010 - 18:40) ZigZag написал(а):
$text = '>ТЕКСТ КОТОРЫЙ УБРАТЬ: Нужный текст';
echo preg_replace('/>.+:/', ' ', $text);
Спустя 6 минут, 42 секунды (26.03.2010 - 18:47) zawm написал(а):
это же наоборот оставляет текст который нужно убрать....
Спустя 11 минут, 11 секунд (26.03.2010 - 18:58) zawm написал(а):
>Иванов И.И:Как дела?
Вот к примеру отсюда вырезать надо ">Иванов И.И:" и оставить только "Как дела?"
Вот к примеру отсюда вырезать надо ">Иванов И.И:" и оставить только "Как дела?"
Спустя 1 минута, 35 секунд (26.03.2010 - 18:59) ZigZag написал(а):
чем тебя мой вариант не устроил? проверил еще раз, он делает в точности то что тебе надо
Спустя 2 минуты, 6 секунд (26.03.2010 - 19:01) zawm написал(а):
Вопрос закрыт спасибо. Я сам затупил. Извините все понял.
Спустя 33 секунды (26.03.2010 - 19:02) Winston написал(а):
А так ?
preg_replace ("/>?.*:/i", "", $str);
Спустя 6 часов, 43 минуты, 39 секунд (27.03.2010 - 01:46) sergeiss написал(а):
Хочу обратить внимание на то, что для всех функций работы с регулярками в хэлпе четко написано: если задачу можно решить без регулярок, то лучше обойтись без них. Потому что они ресурсов потребляют много.
В данном случае, мне так что-то кажется, проще было бы использовать функции strpos (2 раза) и substr.
В данном случае, мне так что-то кажется, проще было бы использовать функции strpos (2 раза) и substr.
Спустя 6 часов, 29 секунд (27.03.2010 - 07:46) olgatcpip написал(а):
я обычно циклом...... заодно и отсеиваю пустоты..
"> :" вот такие и как-то более подробно получается отследить....
я так полагаю у вас примерно так:
и я бы (прошу раскритиковать) сделала бы как-то так
"> :" вот такие и как-то более подробно получается отследить....
я так полагаю у вас примерно так:
$str='>ТЕКСТ КОТОРЫЙ УБРАТЬ: Нужный текст';
>ТЕКСТ КОТОРЫЙ УБРАТЬ: Нужный текст
>ТЕКСТ КОТОРЫЙ УБРАТЬ: Нужный текст

$strings=explode('>',$str);
foreach($strings as $string){
if(!trim($string)) continue;
list($x,$s)=explode(':',$string);
if(!trim($s)) continue;
echo '---'.$s;
}
Спустя 2 минуты, 20 секунд (27.03.2010 - 07:48) ZigZag написал(а):
Цитата |
Хочу обратить внимание на то, что для всех функций работы с регулярками в хэлпе четко написано: если задачу можно решить без регулярок, то лучше обойтись без них. Потому что они ресурсов потребляют много. В данном случае, мне так что-то кажется, проще было бы использовать функции strpos (2 раза) и substr. |
Получиться такой код:
$str = '>Иванов И.И:Как дела?';
$pos_one = strpos($str, '>');
$pos_two = strpos($str, ':', $pos_one);
if ($pos_one !== false && $pos_two !== false && ($pos_two - $pos_one) != 1) $str = str_replace(substr($str, $pos_one, $pos_two +1), '', $str);
echo $str;
Намного больше буковок да и проверку на тип надо производить, мне наоборот кажеться тут релулярки норм.
Данный случай можно немного модифицировав использовать если в строке надо делать несколько замен:
$str = '>Иванов И.И:Как дела?
>Терминатор В.П.:Тебе конец';
while (($pos_one = strpos($str, '>')) !== false)
{
$pos_two = strpos($str, ':', $pos_one);
if ($pos_two !== false && ($pos_two - $pos_one) != 1) $str = str_replace(substr($str, $pos_one, $pos_two +1), '', $str);
echo $str;
}
Спустя 2 часа, 37 минут, 57 секунд (27.03.2010 - 10:26) sergeiss написал(а):
Цитата (ZigZag @ 27.03.2010 - 08:48) |
Намного больше буковок да и проверку на тип надо производить, мне наоборот кажется тут регулярки норм. |
Я говорил не про количество кода, а про то, сколько времени он будет выполняться. В хэлпе об этом речь идет.
И кстати, зачем использовать str_replace??? Я чегой-то не понял глубокий смысл этой замены. Вырезал часть строки функцией substr - и всё.
Спустя 31 минута, 24 секунды (27.03.2010 - 10:58) ZigZag написал(а):
Цитата |
Я говорил не про количество кода, а про то, сколько времени он будет выполняться. В хэлпе об этом речь идет. И кстати, зачем использовать str_replace??? Я чегой-то не понял глубокий смысл этой замены. Вырезал часть строки функцией substr - и всё. |
Найти компромис между читаемостью и краткостью кода против скорости выполнения тоже не мало важно, если проект небольшой и нагрузка будет незначительной, предпочтительно писать так, чтобы было проще ориентироваться в коде. Так что думаю решать каким способом реализовывать решать тому кто будет пользоваться.
Замена для того чтобы работало когда строка будет, например, такой:
$str = 'Каккой то текст идет, >Иванов И.И:Как дела?
>Терминатор В.П.:Тебе конец';
Когда неизвестно в каком месте строчки будет удаляемая часть