2010-08-04 10 views
5

Ho bisogno di contare il no. di righe di script java in linea tra tag di script in file php. Come lo faccio? Comando grep linux è sufficiente o posso ottenere qualche strumento per farlo? Per favore aiuto.Come contare il numero di linee di javascript nei file php?

+0

come si propone di contare ' 'vs.' ' – stillstanding

+0

Se riesco a farlo da riga di comando con grep, wc e awk, sarebbe fantastico. Ho bisogno di un rapporto come index.php 40 about.php 50 40 e 50 sono linee di javascript in linea. – Geshan

risposta

3

È possibile utilizzare un'espressione regolare per estrarre il contenuto di ciascun tag SCRIPT nei file e contare le \ n occorrenze all'interno del contenuto.

Questa espressione regolare deve corrispondere tutte le tag script tra cui l'apertura e tag di chiusura:

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

Si dovrebbe di rimuovere i tag e le linee senza alcun codice di contare le vere linee di codice JavaScript.

+0

Che dire di 'alert ('');'? – hsz

+0

Perché una tale linea di codice ha senso? Perché non mi dà un buon esempio su come il mio codice fallisce come echo ''; :) È possibile trovare una stringa che destory l'abbinamento ora importa quanto è buono. Ma penso che un'idea di base dovrebbe essere sufficiente. – 2ndkauboy

+0

Come lo uso con grep puoi dare un esempio. – Geshan

0

Si prega di dare un'occhiata al seguente codice, funziona, ma potrebbe essere necessario aggiornamenti secondo i vostri requisiti

<?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> 

salvare il file php come thisfile.php quindi provare

Have A Nice Day

0

Se è necessario eseguire questa operazione da una pagina HTML elaborata, utilizzare DOM per ottenere tutti i tag di script senza un attributo src. Quindi, per ciascun nodo trovato, dividere il TextNode figlio in base al linebreak o contarli semplicemente. Fatto.

Se avete bisogno di afferrare questo dal codice sorgente PHP reale, utilizzare il Tokenizer per trovare T_STRINGS and similar parser tokens e analizzarli per <script> blocchi, ma nota che potrebbe essere impossibile trovarli tutti, se c'è un codice simile:

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

perché non sarà analizzabile come stringa JavaScript prima che PHP lo elaborasse.

Problemi correlati