2010-08-04 14 views
5

Necesito contar el no. de líneas de script java en línea entre etiquetas de script en archivos php. ¿Cómo lo hago? ¿Será suficiente el comando grep linux o puedo obtener alguna herramienta para hacerlo? Por favor ayuda.¿Cómo contar el número de líneas de javascript en archivos php?

+0

cómo propone contar ' 'contra' ' – stillstanding

+0

Si puedo hacerlo desde la línea de comando con grep, wc y awk sería genial. Necesito un informe como index.php 40 about.php 50 40 y 50 son líneas de JavaScript en línea. – Geshan

Respuesta

3

Puede usar una expresión regular como para extraer el contenido de cada etiqueta SCRIPT en sus archivos y contar las \ n ocurrencias dentro del contenido.

Esta expresión regular debe coincidir con toda etiqueta script incluyendo la apertura y la etiqueta de cierre:

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

debe quitar de las etiquetas y líneas sin ningún código para contar las líneas reales de código JavaScript.

+0

¿Qué pasa con 'alerta ('');'? – hsz

+0

¿Por qué tal línea de código tendría sentido? ¿Por qué no darme un buen ejemplo de cómo mi código falla como echo ''; :) Usted puede encontrar una cadena que desterraría la coincidencia ahora importa qué tan buena sea. Pero creo que una idea básica debería ser suficiente. – 2ndkauboy

+0

¿Cómo lo uso con grep? Puede dar un ejemplo. – Geshan

0

favor, eche un vistazo en el siguiente código, que funciona, pero es posible que necesite actualizaciones según sus necesidades

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

guardar este archivo php como thisfile.php luego tratar

tenga un buen día

0

Si necesita hacer esto desde una página HTML procesada, use DOM para obtener todas las etiquetas de script sin un atributo src. Luego, para cada nodo encontrado, divida el niño TextNode por el salto de línea o simplemente cuéntelos. Hecho.

Si necesita agarrar esto desde el código fuente PHP real, utiliza el Tokenizer encontrar T_STRINGS and similar parser tokens y analizarlos para <script> bloques, pero tenga en cuenta que puede ser que sea imposible encontrar a todos ellos, si hay un código como:

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

porque no será analizable como una cadena de JavaScript antes de que PHP lo haya procesado.

Cuestiones relacionadas