1. Подскажите регулярное выражение, чтобы выбрать отсюда Код (Text): m[1] = {text:"Тестовое сообщение" + "\"" + "."}; Тестовое сообщение" + "\"" + ". 2. Как с помощью функции preg_replace_callback, использовать два регулярных выражения Код (Text): '/m\[([^"]+)]\s=\s\{text:"([^"]+)"};/'; '/m\[([^"]+)]\s=\s\{number:([^"]+), text:"([^"]+)"};/'; для Код (Text): m[1] = {text:"klass"}; m[2] = {number:1, text:"klass"};'; чтобы в итоге получить два XML Код (Text): <i text="klass" /> <i number="1" text="klass" />
m[1] = {text:"Тестовое сообщение" + "\"" + "."}; преобразовать в <i Id="1" text="Тестовое сообщение" + "\"" + "." />
PHP: $str = 'm[1] = {text:"Тестовое сообщение" + "\"" + "."};'; $preg = '/^m\[(\d)+\]\s*=\s*{\s*text\s*:\s*"([^"]+)"\s*\+\s*"\\\""\s*\+\s*"\."\s*};/m'; $to = '<i Id="\1" text="\2" + "\"" + "." />'; echo '<textarea cols="60" rows="2">'; echo $str, "\n"; echo preg_replace($preg, $to, $str); echo '</textarea>';
Просто поиск идет до первых встреченных кавычек, так безопаснее. Тут сработает и более жадное (.*) вместо "([^"]+)", но не советую. Там ещё модификатор m лишний. Поставил в начале ^, а его забыл убрать.