2010-08-04 3 views
5

Je dois compter le non. de lignes de script java en ligne entre les balises de script dans les fichiers php. Comment fait-on ça? La commande grep linux suffira-t-elle ou je peux obtenir un outil pour le faire? S'il vous plaît aider.Comment compter le nombre de lignes de javascript dans les fichiers php?

+0

comment proposez-vous de compter le 'vs ' – stillstanding

+0

Si je peux le faire à partir de la ligne de commande avec grep, wc et awk ce serait génial. J'ai besoin d'un rapport comme index.php 40 about.php 50 40 et 50 sont des lignes de javascript en ligne. – Geshan

Répondre

3

Vous pouvez utiliser une expression régulière pour extraire le contenu de chaque balise SCRIPT dans vos fichiers et compter les \ n occurrences dans le contenu.

Cette regex doit correspondre à tous les balises de script, y compris la balise d'ouverture et de fermeture:

/<script[^>]*?>(.*)?</script>/sm 

Vous devriez que supprimer les balises et les lignes sans code pour compter les réelles lignes de code JavaScript.

+0

Qu'en est-il de 'alert ('');'? – hsz

+0

Pourquoi une telle ligne de code aurait-elle un sens? Pourquoi ne pas me donner un bon exemple sur la façon dont mon code échoue comme echo ''; :) Vous pouvez tous trouver une chaîne qui destory la correspondance maintenant importe combien c'est bon. Mais je pense qu'une idée de base devrait suffire. – 2ndkauboy

+0

Comment l'utiliser avec grep pouvez-vous donner un exemple. – Geshan

0

S'il vous plaît jeter un oeil sur le code suivant, cela fonctionne, mais vous devrez peut-être mises à jour selon vos besoins

<?php 
$file = file('thisfile.php'); 
for($i=0;$i<count($file);$i++) 
{ 
    if(trim($file[$i]) == "<script language=\"javascript\">") 
    { 
     $start = $i.'<br>'; 
    } 
    if(trim($file[$i]) == "</script>") 
    { 
     $end = $i.'<br>'; 
    } 

} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script language="javascript"> 
var a = 10; 
var b = 10; 
var c = 10; 
var d = 10; 
var e = 10; 
var e = 10; 
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<?php echo ($end - $start)-1; ?> 
</body> 
</html> 

enregistrer ce fichier php comme thisfile.php essayez

Bonne journée

0

Si vous devez le faire à partir d'une page HTML traitée, utilisez DOM pour obtenir toutes les balises de script sans attribut src. Ensuite, pour chaque noeud trouvé, divisez le TextNode enfant par le linebreak ou comptez-les simplement. Terminé.

Si vous devez saisir ce à partir du code source de PHP réelle, utilisez le Tokenizer pour trouver T_STRINGS and similar parser tokens et les analyser pour <script> blocs, mais notez qu'il est peut-être impossible de les trouver, s'il y a un code comme:

echo '<' . $scriptTag . '>' . $code . '</' . $scriptTag . '>'; 

car cela ne sera pas analysable en tant que chaîne JavaScript avant que PHP ne l'ait traité.

Questions connexes