PHP Javascript Kaldır

5 Cevap php

hey i html gelen javascript kaldırmak için çalışıyorum ama php onun burada bana bir boş dizi vererek çalışmak için regex almıyorum adamlar benim kodu

<?php
$var = '
<script type="text/javascript"> 
function selectCode(a) 
{ 
   var e = a.parentNode.parentNode.getElementsByTagName(PRE)[0]; 
   if (window.getSelection) 
   { 
      var s = window.getSelection(); 
       if (s.setBaseAndExtent) 
      { 
         s.setBaseAndExtent(e, 0, e, e.innerText.length - 1); 
      } 
      else 
      { 
         var r = document.createRange(); 
         r.selectNodeContents(e); 
         s.removeAllRanges(); 
         s.addRange(r); 
      } 
   } 
   else if (document.getSelection) 
   { 
      var s = document.getSelection(); 
      var r = document.createRange(); 
      r.selectNodeContents(e); 
      s.removeAllRanges(); 
      s.addRange(r); 
   } 
   else if (document.selection) 
   { 
      var r = document.body.createTextRange(); 
      r.moveToElementText(e); 
      r.select(); 
   } 
} 
</script>
';

   function remove_javascript($java){
   echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/i', "", $java);

   }    
?>

5 Cevap

bu bunu yapmak gerekir:

echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $var);

/ S nokta böylece. maçlar çok satırsonlarını.

Sadece bir uyarı, bir web sitesi için kullanıcı girişi sterilize regexp bu tip kullanmak gerekir. Etrafında almak için sadece çok yolları vardır. Kullanacağım http://htmlpurifier.org/ kütüphane gibi bir şey sanitasyon için

Bu istediğinizden daha fazlasını yapabilir, ama sizin durumunuza bağlı olarak size strip_tags bakmak isteyebilirsiniz.

Sizin durumunuzda satır ayrılmış dizeleri bir liste olarak dize görüyor ve komut dosyası etiketlerini içeren satırları (birinci ve ikinci son) kaldırmak ve hatta düzenli ifadeler gerek olmazdı olabilir.

Ne yapmaya çalışıyorsun önlenmesi ise XSS sadece komut dosyası etiketlerini kaldırmak için yeterli olmayabilir rağmen.

İşte bir fikir

while (true) {
  if ($beginning = strpos($var,"<script")) {
    $stringLength = (strpos($var,"</script>") + strlen("</script>")) - $beginning;
    substr_replace($var, "", $beginning, $stringLength);
  } else {
    break
  }
}

Ben bunu kullanın:

function clear_text($s) {
    $do = true;
    while ($do) {
        $start = stripos($s,'<script');
        $stop = stripos($s,'</script>');
        if ((is_numeric($start))&&(is_numeric($stop))) {
            $s = substr($s,0,$start).substr($s,($stop+strlen('</script>')));
        } else {
            $do = false;
        }
    }
    return trim($s);
}