Помощь по регулярным выражениям

LDZ

Новичок
Помощь по регулярным выражениям

Помогите составить выражение, удаляющее пробелы до и после запятой

Заранее спасибо
 

WP

^_^
(?,)\s+|\s+(?,)

;) допиши сам тут кое-что прочитав руководство
 

LDZ

Новичок
$tagsw = preg_replace("/\s*,\s*/", ",", $tagsw);

Короче сделал так

Спасибо всем, кто ответил
 

LDZ

Новичок
У меня в базу идут ключевые слова.

Мне необходимо чтобы конструкция вроде "Собака, Машина моего дяди, Кошка" или что-то подобное

разбивалось не на
1. Собака
2. (пробел)Машина моего дяди
3. (пробел)Кошка

А на это:
1. Собака
2. Машина моего дяди
3. Кошка
 

Страшный Злодей

Бывший член клуба (достало хамство).
Автор оригинала: LDZ
У меня в базу идут ключевые слова.

Мне необходимо чтобы конструкция вроде "Собака, Машина моего дяди, Кошка" или что-то подобное

разбивалось не на
1. Собака
2. (пробел)Машина моего дяди
3. (пробел)Кошка

А на это:
1. Собака
2. Машина моего дяди
3. Кошка
Тогда вам лучше юзать explode и trim (ИМХО) Регулярки дольше обрабатываются..
 

Breeze

goshogun
Команда форума
Партнер клуба
Регулярки дольше обрабатываются
это самое медленное место в скрипте будет, да..
уж лучше тогда [m]preg_split[/m] использовать, если в итоге массив нужен
 

Страшный Злодей

Бывший член клуба (достало хамство).
Автор оригинала: Beavis
тогда уж тебе нужен ltrim и rtrim
???
Вот код:
PHP:
$pieces = explode(",", "Собака, Машина моего дяди, Кошка");
foreach($pieces as &$value) {$value = trim($value);}
Как видите ни ltrim ни rtrim не понадобились. Зачем человека путаете?
 

phprus

Moderator
Команда форума
Страшный Злодей
Для решения такой задачи использовать &$value не очень хороше, так как после выполнения цикла переменная $value будет показывать на последний элемент массива и таким образом массив можно будет легко повредить.

Лучше цикл переписать так:
PHP:
foreach($pieces as $k=>$v) { $pieces[$k] = trim($pieces[$k]);}
А еще лучше использовать встроенную функцию [m]array_map[/m]
 

Страшный Злодей

Бывший член клуба (достало хамство).
Автор оригинала: phprus
Для решения такой задачи использовать &$value не очень хороше, так как после выполнения цикла переменная $value будет показывать на последний элемент массива и таким образом массив можно будет легко повредить.

Лучше цикл переписать так:
PHP:
foreach($pieces as $k=>$v) { $pieces[$k] = trim($pieces[$k]);}

Приехали... А типа $v, что не будет ни чего содержать?
Добавьете строку:
PHP:
echo "v = $v";
к вашему коду и посмотрите...

Раз уж такая паранойя то [m]unset[/m] в помощники.

-~{}~ 28.07.07 14:23:

А еще лучше использовать встроенную функцию [m]array_map[/m]
[m]array_map[/m] можно:
PHP:
$pieces = array_map("trim", $pieces);
только чем лучше? Тот же предмет, только вид с боку… Если появится надобность в дополнительной обработке в цикле, то возникнут сложности. Зачем?
 

phprus

Moderator
Команда форума
Страшный Злодей
Приехали... А типа $v, что не будет ни чего содержать?
Добавьете строку:
echo "v = $v";
к вашему коду и посмотрите...
$v будет содержать значение, а не ссылку.
Попробуй сделать
$value = 'a';
после цикла и ты увидишь, что изменится последний элемент массива, который был передан foreach.
 

Страшный Злодей

Бывший член клуба (достало хамство).
phprus
Да, действительно я не до конца вас понял. Спасибо, что поправили, теперь и сам буду иметь это в виду.
 
Сверху