Sed скрипт для удаления всего в теге <head>кроме <title>и вставки скрипта - PullRequest
0 голосов
/ 24 июня 2011

Я хочу удалить все внутри тега <head>, кроме <title> в html-файле, а также вставить скрипт в тег <head> после того, как это будет сделано.Я не хочу удалять сам тег <head>.

Возможно ли это с помощью Sed?

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Я предложу вам использовать DOM Parser для этого типа работы, так как любое регулярное выражение, которое вы попробуете, в какой-то момент сломается, используя sed или любой его вариант. Так как вы попросили альтернативу в ваших комментариях, рассмотрите следующий код на PHP:

$content = '
<HTML>
<HEAD>
   <link href="/style.css" rel="stylesheet" type="text/css">
   <title>
   Page Title Goes here
   </title>
   <script>
       var str = "ZZZZZ1233@qq.edu";
   </script>    
</HEAD>
';
$dom = new DOMDocument();
$dom->loadHTML($content);
$head='
<head>
<script>
   // your javascript goes here
   var x="foo";
</script>
';
$headTag = $dom->getElementsByTagName("head")->item(0);
if ($headTag != null) {
   $title = $headTag->getElementsByTagName("title")->item(0);
   if ($title != null)
      $head .= '<title>' . $title->textContent . '</title>
';
}
$head .= '</head>';
var_dump($head);

OUTPUT

string(118) "
<head>
<script>
   // your javascript goes here
   var x="foo";
</script>
<title>Page Title Goes here</title>
</head>"
0 голосов
/ 24 июня 2011

Использование регулярных выражений для разбора HTML не является хорошим выбором. См. эту знаменитую статью для полного обсуждения

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