PHP, preg_replace, заменить тег тегом attr

Могу ли я подробно объяснить, как заменить тег на текущий attr, используя php?

Я читаю руководство и некоторые референсы

Как использовать php preg_replace для замены тегов HTML

Для легкой команды я могу понять, но для команды поиска на preg_replace с буквами, такими как ~, $1, /n, и т. Д., Я вообще не понимаю …

Если я хочу заменить

  <script src="core.js"></script> 

в

  <temp src="library/js/core.js"></temp> 

Как я могу реализовать preg_replace?

Большое вам спасибо за ваш совет.

Вам нужно узнать о регулярных выражениях, этот сайт является полезным ресурсом;

Быстрый пример с preg_replace может быть чем-то вроде этого – его можно было бы улучшить, но, надеюсь, вы дадите вам идею …

 <?php $string = '<script src="core.js"></script>'; $pattern = '/<script src\s?=\s?['|"](.*)['|"]><\/script>/i'; $replace = ' <temp src="library/js/$1"></temp>'; $result = echo preg_replace($pattern, $replace, $string); ?> 

Вам нужно будет узнать о обратных ссылках, чтобы использовать согласованные биты строки для создания нового. Вкратце, часть вашего шаблона, заключенная в круглые скобки, может быть получен позже с помощью токена $ 1, который вы включаете в строку $ replace. Вы можете ссылаться столько раз, сколько хотите. Вы можете тестировать регулярные выражения, поскольку вы работаете над ними здесь тоже, надеюсь, что это поможет.

Почти никогда не рекомендуется использовать регулярные выражения для HTML. Рассмотрим DOM , затем что-то вроде:

 foreach($dom->getElementsByTagName('script') as $script) { $temp = $dom->createElement('temp'); /* * create src attribute, append it to $temp and copy value from $script * I leave that up to you. */ $script->parentNode->replaceChild($temp, $script); }