Выполнение многострочного sed в php: избежание проблем - PullRequest
1 голос
/ 15 февраля 2011

Я пытаюсь запустить sed для многострочного поиска и заменить на следующую строку

$test = "sed -n '1h;1!H;${;g;s/iname=\"".$name.".*item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);

sed - выбор, так как длина строки для поиска превышает 10 МБ.

Во время выполнения компилятор выдает предупреждение

PHP Parse error:  syntax error, unexpected ';' 

Как мне решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

Вам нужно сбежать от $ в ${}.

$test = "sed -n '1h;1!H;\${;g;s/iname=\"".$name.".*item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);

Однако, чтобы люди могли читать ваш код, вам действительно нужно разбить строку на части. Создайте его, объединяя другие строки, sprintf или HEREDOC.

0 голосов
/ 15 февраля 2011

Вероятно, знак $ внутри переменной $test заставляет PHP думать, что есть еще одна переменная, которую следует расширить.

Попробуйте экранировать символ $ (\$) и получитепосмотрите соответствующие строки PHP документ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...