Изменить регистр узлов в импортированном XML-файле через PHP preg_replace - PullRequest
0 голосов
/ 02 августа 2009

Я пытаюсь обработать импортированный файл XML и сделать текст в одном из узлов

<Name>SOMETHINGTOMAKELOWERCASE</Name>

строчные буквы

<Name>somethingtomakelowercase</Name>

Пока я получил:

$xml = file_get_contents($xmlfile);
$xml = preg_replace('/<Name>(.*)<\/Name>/e', '<Name>' . strtolower($1) . '</Name>',$xml); 
fwrite(fopen($xmlfile, 'wb'), $xml);

Я пробовал около десяти разных версий регулярного выражения, но ни одна из них не будет работать. Не могли бы вы указать мне правильное направление относительно правильного регулярного выражения?

1 Ответ

2 голосов
/ 02 августа 2009

Попробуйте вместо этого:

$xml = file_get_contents($xmlfile);
$xml = preg_replace('/<Name>(.*)<\/Name>/e', "'<Name>' . strtolower('\\1') . '</Name>'",$xml); 
fwrite(fopen($xmlfile, 'wb'), $xml);

При использовании модификатора / e в preg_replace вы должны передать строку кода, которая должна быть оценена, в качестве параметра замены, а не уже вычисленное выражение.

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