Autor Zpráva
gladiator
Profil *
Ahoj
jak bych odstranil pomoci regularniho vyrazu jednoratkovy komentar mezi tagy
<script type="">
//komentar
neco
//komentar
</script>?


potrebuji aby to mazalo jenom mezi <script>
Radek9
Profil
gladiator:
To tak jednoduše nejde. Vzhledem k tomu, že komentáře nemusí být jen na začátku řádku a že se ti dvě lomítka mohou objevit klidně i ve stringu. Na tohle by byl spíš potřeba nějaký parser.
gladiator
Profil *
a slo by: preg_replace("~\r\n~","",$xx); udelat tak aby to nemazalo radky mezi <script></script>?
peta
Profil
Pro JS
html koment odmazavam takhle (pro me ucely vyhovujici)
str = str.replace(/<!--[\n\w\W]*?-->/gi,"");    //comment
Koment ve scriptu je zaludnejsi. Zjednodusena verze by mohla byt asi takova
/\/\/.*$/g (mozna gm)
Na jednom foru pisi toto
var cleanCode = function cleanCode(input) {
  // Remove special characters:
  return input.replace(/\/\/[^"'].*?\n/g, '') /* //comments, but ignore a "//" if there is a quote after it */
              .replace(/\n/g, '')             /* Leftover newlines */
              .replace(/\r/g, '');            /* Carriage returns  */
};

Pro PHP, co jsi nasel googlem?
google = php remove js comment
http://upshots.org/javascript/javascript-regexp-to-remove-comments

$text = preg_replace('!/\*.*?\*/!s', '', $text);
$text = preg_replace('/\n\s*\n/', "\n", $text);


---


$string = preg_replace('/(\s+)\/\*([^\/]*)\*\/(\s+)/s', "\n", $string);


---


Pak tu pouzivaji parser
<?
if (!defined('T_ML_COMMENT')) {
   define('T_ML_COMMENT', T_COMMENT);
} else {
   define('T_DOC_COMMENT', T_ML_COMMENT);
}
function strip_comments($source) {
    $tokens = token_get_all($source);
    $ret = "";
    foreach ($tokens as $token) {
       if (is_string($token)) {
          $ret.= $token;
       } else {
          list($id, $text) = $token;

          switch ($id) { 
             case T_COMMENT: 
             case T_ML_COMMENT: // we've defined this
             case T_DOC_COMMENT: // and this
                break;

             default:
                $ret.= $text;
                break;
          }
       }
    }    
    return trim(str_replace(array('<?','?>'),array('',''),$ret));
}
?>

Now using this function 'strip_comments' for passing code contained in some variable:

<?
$code = "
<?php 
    /* this is comment */
   // this is also a comment
   # me too, am also comment
   echo "And I am some code...";
?>";

$code = strip_comments($code);

echo htmlspecialchars($code);
?>

Will result output as

<?
echo "And I am some code...";
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: