HTML 파일에서 자바스크립트를 제거하고 일반 텍스트를 유지하는 방법

HTML 파일에서 자바스크립트를 제거하고 일반 텍스트를 유지하는 방법

내 컴퓨터의 "input.txt" 텍스트 파일에서 입력을 받아 결과를 "output.txt" 텍스트 파일로 출력하도록 다음 스크립트를 적용하려고 합니다.

스크립트는 인터넷에서 HTML을 가져오는 데는 잘 작동하지만 필요한 적응을 파악할 수 없습니다.

이상한 점은 제가 1년 전에 그것을 알아냈다는 것입니다. 하지만 제가 무엇을 했는지 기억이 나지 않습니다. 저는 프로그래머가 아닙니다.

암호:

url='http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags'
curl -s  "$url"   |
sed -Ene:n -etD   \
    -e's/ ?[^ "]*"[^"]*"//g;/"/'bN  \
    -e's/[[:space:]]*($|<)/\n\1/'   \
    -e'/^Moderator.s Note/q'        \
    -e'/.\n/P;/\n</!t'        -e:D  \
    -e'/\n/D;/^<script>/!s/>/&\n/'  \
    -e'/\n/!s/<\/script>/\n/' -e:N  \
    -e'/\n/!{N;s///;}' -e//tD -etn

답변1

HTML 파일에서 자바스크립트를 제거하고 일반 텍스트를 유지하는 방법은 무엇입니까?

이는 정규식을 사용하여 토큰 및 유지 관리 가능성을 구문 분석하는 것과 관련된 또 다른 문제를 강조한다고 생각하기 때문에 흥미로운 질문입니다.

이 스크립트는 시스템에 PHP를 사용할 수 있는 경우 이 작업을 수행합니다.

#!/usr/local/bin/php
# point the #! to wherever your PHP commandline binary is

<?php

error_reporting(1);

$html = file_get_contents('http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags');

// create an object representing the DOM tree of the webpage
$document = new DOMDocument;
$document->loadHTML($html);

// store the <script> elements as a DOMN
$script_nodes = $document->getElementsByTagName('script');

// For some reason you can't use the DOMNode::removeChild method
// when iterating through an instance of PHP's DOMNodeList
// so use an array to queue the values in. see
// http://php.net/manual/en/domnode.removechild.php
$scripts_to_remove = [];
for ( $i=0; $i < $script_nodes->length; $i++ ) {
    $scripts_to_remove[] = $script_nodes->item($i);
}

// now we can iterate through the <script> nodes removing them
foreach ( $scripts_to_remove  as $s_node ) {
    $parent = $s_node->parentNode;
    $parent->removeChild($s_node);
}

// print out the new DOM as HTML
echo $document->saveHTML();

용법

스크립트를 사용하려면 위 코드가 포함된 파일을 설정하고 실행 가능하게 만든 다음 실행하고 태그가 제거된 HTML을 포함해야 하는 파일로 출력을 리디렉션합니다 <script>.

관련 정보