2010-08-04 33 views
5

Tôi cần đếm số không. các dòng mã lệnh nội tuyến java giữa các thẻ tập lệnh trong các tệp php. Tôi phải làm nó như thế nào? Sẽ grep linux lệnh đủ hoặc tôi có thể nhận được một số công cụ để làm điều đó? Hãy giúp tôi.Làm thế nào để đếm số dòng của javascript trong các tập tin php?

+0

cách bạn đề xuất đếm thông báo ' 'vs.' ' – stillstanding

+0

Nếu tôi có thể làm điều đó từ dòng lệnh với grep, wc và awk nó sẽ là tuyệt vời. Tôi cần một báo cáo như index.php 40 about.php 50 40 và 50 là dòng nội tuyến javascript. – Geshan

Trả lời

3

Bạn có thể sử dụng cụm từ thông dụng như để trích xuất nội dung của từng thẻ SCRIPT trong tệp của bạn và đếm số lần xuất hiện trong nội dung.

regex này phải phù hợp với tất cả các thẻ script trong đó có việc mở và thẻ đóng:

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

Bạn hơn nên loại bỏ các thẻ và dòng mà không cần bất kỳ mã để đếm các dòng thực sự của mã JavaScript.

+0

Còn về 'alert ('');'? – hsz

+0

Tại sao một dòng mã như vậy có ý nghĩa gì? Tại sao không cho tôi một ví dụ tốt về cách mã của tôi không thành công như echo ''; :) Bạn có thể tìm thấy một chuỗi mà sẽ hủy bỏ sự phù hợp bây giờ vấn đề nó tốt như thế nào. Nhưng tôi nghĩ một ý tưởng cơ bản là đủ. – 2ndkauboy

+0

Làm cách nào để sử dụng nó với grep bạn có thể đưa ra một ví dụ. – Geshan

0

Hãy xem trên đoạn mã sau, nó hoạt động nhưng bạn có thể cần phải cập nhật theo yêu cầu của bạn

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

lưu file php này như thisfile.php sau đó thử

Have a nice day

0

Nếu bạn cần thực hiện việc này từ trang HTML đã xử lý, hãy sử dụng DOM để nhận tất cả thẻ tập lệnh mà không cần thuộc tính src. Sau đó, đối với mỗi nút được tìm thấy, hãy phân tách cú pháp TextNode con theo dòng hoặc đếm đơn giản. Làm xong.

Nếu bạn cần phải lấy từ mã nguồn PHP thực tế, sử dụng Tokenizer để tìm T_STRINGS and similar parser tokens và phân tích chúng cho <script> khối, nhưng lưu ý rằng nó có thể là không thể tìm thấy tất cả, nếu có mã như:

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

vì điều đó sẽ không thể phân tích dưới dạng Chuỗi JavaScript trước khi PHP xử lý nó.

Các vấn đề liên quan