Как сжать последовательность одинаковых символов, заменив ее одним символом?

  • Автор темы Автор темы Jalart
  • Дата начала Дата начала

Jalart

Новичок
Как сжать последовательность одинаковых символов, заменив ее одним символом?

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

PHP:
"Char(900, \\\\\\\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\\\\\\')"

Надо заменить все слэши одним слэшем, то есть, привести к виду

PHP:
"Char(900, \'jhgjgfhfdyhkjn gfgfdfg\')"

Написал код вида

PHP:
<?php
$pattern = '/\/\//';
$replacement ="111";
$subject = "Char(900, \\\\\\\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\\\\\\')";
echo $subject;
echo '<br>';
$end = preg_replace($pattern, $replacement, $subject, -1);
echo $end;
?>

Но что на входе, что на выходе - все одно и то же.

Пробовал также stripslashes

PHP:
$subject = "Char(900, \\\\\\\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\\\\\\')";
stripslashes($subject);
echo $subject;

На выходе получил
PHP:
"Char(900, \\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\') strip"

Помогите, пожалуйста, подправить код.

Заранее спасибо.
 
PHP:
$str ="Char(900, \\\\\\\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\\\\\\')"; 

print $str."\n";
print ereg_replace('[\\]+','\\',$str);
Код:
Char(900, \\\\\'jhgjgfhfdyhkjn gfgfdfg\\\\\')
Char(900, \'jhgjgfhfdyhkjn gfgfdfg\')
 
в ФАКе есть очень хорошая статья по регулярным выражениям - рекомендую прочитать.
Пригодится сейчас и вбудущем.
 
Автор оригинала: SelenIT
Опечатка?
Наверное.

-~{}~ 10.04.06 10:14:

Автор оригинала: SiMM
Куда интереснее, откуда эти слэши взялись - тут скорее надо посылать читать http://phpfaq.ru/slashes
Есть одна старая CMS-система, разработчик которой занимается сейчас другими делами - скрипт после сбоя генерит кучу ошибок в файл error.log при анализе шаблона страницы. Удалось отловить переменную, которая принимает значение с кучей слэшей. Как временное решение - менять все слэши на один слэш.
Как постоянное - выяснить, что генерит эти слэши и прибить ошибку.
 
регулярные выражения тебя вылечат...
только вот нужно лечить не ошибку, а предотвратить её возникновение.

PHP:
$string = ereg_replace(" +", " ", $string);
удаляет повторяющиеся пробелы на один пробел
 
Сверху