PHP-функция preg_replace с регулярным выражением не работает, вопрос синтаксиса - PullRequest
1 голос
/ 13 декабря 2010

Я пытаюсь заменить ненужные новые строки на preg-replace, но мое регулярное выражение неверно.Кто-нибудь есть идеи, что не так с моим регулярным выражением?(У меня есть Apache / 2.0.54 и PHP / 5.2.9

СЕЙЧАС ИМЕЮТ:

{
blaa {
blow;
blue};
bell;}
}ball

БЫ ХОТЕЛИ:

{blaa {blow;blue};bell;}}ball

Эти регулярные выражения не работают, ониудалить слишком много или toolitle ??

$buffer = preg_replace('#/\}\n|\r|\s/#s', '}', $buffer);
$buffer = preg_replace('#/\{\n|\r|\s/#s', '{', $buffer);
$buffer = preg_replace('#/\;\n|\r|\s/#s', ';', $buffer);

/ g (глобальный) дает чистый бланк и без # он ничего не делает. странно ?! Кто-нибудь знает, почему они не работают?

Ответы [ 3 ]

1 голос
/ 13 декабря 2010

Это работает для меня:

$buffer = preg_replace('/\}\\n|\\r|\\s/', '', $buffer);
1 голос
/ 13 декабря 2010

Если вы хотите удалить все пробелы после {, } и ;, сделайте следующее:

preg_replace('/([{};])\s+/', '$1', $buffer)

Здесь / - это разделители ;([{};]) описывает один символ {, } и ; во время захвата совпадения;и \s+ описывает любые следующие пробельные символы (уже включая \r и \n).

1 голос
/ 13 декабря 2010
$buffer = preg_replace('#([{};])(?:\n|\r|\s)#s', '$1', $buffer);
...