Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Удалить пробелы регалярным выражением PHP между { }

Другой Мир Ученик (201), на голосовании 3 года назад
В общем есть "{ a adsds= asdasd} asd asd{/ asda asd}"... так вот как тут регалярным выражением удалить пробелы между { } ??
Дополнен 3 года назад
Должно получиться => {aadsds=asdasd} asd asd{/asdaasd}
Голосование за лучший ответ
Александр Баев Мыслитель (5909) 3 года назад
попробуй это
сначала разбить строку где отдельно будут символы в фигурных скобках и уже чистить их
$string = preg_replace('/\s+/', '', $string);
Другой МирУченик (201) 3 года назад
не то... {aadsds=asdasd}asdasd{/asdaasd}, а должно быть {aadsds=asdasd} asd asd{/asdaasd}
Александр Баев Мыслитель (5909) Другой Мир, я дополнил, ты разве не можешь разбить строку где отдельно будут символы в фигурных скобках?
Другой МирУченик (201) 3 года назад
то есть одним регулярным выражением то что мне нужно сделать нельзя? у меня там более 5к строк
Александр Баев Мыслитель (5909) Другой Мир, так скажу, одним выражением такое не получится (либо я такого просто не знаю). Ведь регулярные выражения это просто шаблон и если шаблон совпадает, то от этого уже пляшем что делать с этим участком. В один шаг я не представляю как это сделать, ведь на первом шаге мы максимум можем найти строку с фигурными скобками. А вот уже потом как мы нашли эту строку мы находим в этой строке пробелы и убираем их.
Самый День Оракул (99750) 3 года назад
<?php
$str = "{ a adsds= asdasd} asd asd{/ asda asd} asd{/ as da asd5 /}";

preg_match_all("/(?<=\{)([^\{\}]+)(?=\})/", $str, $arr, PREG_PATTERN_ORDER);

while ( list (, $val) = each ($arr[1])){
$search[] = "'\{".$val."\}'";
$replace[] = "{".str_replace (" ", '', $val)."}";
}

print $str."<br>\n";
print preg_replace ($search, $replace, $str);

?>
Похожие вопросы