Geshan
Geshan

Reputation: 1141

How to Count number of lines of javascript in php files?

I need to count the no. of lines of inline java script between script tags in php files. How do I do it? Will grep linux command suffice or I can get some tool to do it? Please help.

Upvotes: 5

Views: 870

Answers (3)

Gordon
Gordon

Reputation: 317147

If you need to do this from a processed HTML page, use DOM to get all script tags without a src attribute. Then for each found node split the child TextNode by the linebreak or simple count them. Done.

If you need to grab this from actual PHP source code, use the Tokenizer to find T_STRINGS and similar parser tokens and analyze them for <script> blocks, but note that it might be impossible to find them all, if there is code like:

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

because that wont be analyzable as a JavaScript String before PHP processed it.

Upvotes: 0

john
john

Reputation: 535

Please take a look on the following code,it works but you may need to updates as per your requirements

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

save this php file as thisfile.php then try

Have a nice day

Upvotes: 0

2ndkauboy
2ndkauboy

Reputation: 9397

You might use a regular expression like to extract the content of each SCRIPT tag in your files and than count the \n occurrences within the content.

This regex should match all script tag including the opening and closing tag:

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

You should than remove the tags and lines without any code to count the real lines of JavaScript code.

Upvotes: 3

Related Questions