更新时间:
我正在使用RecursiveIteratorIterator扫描目录以读取index.html文件。
现在,基于Pubname和Pubversion,我试图读取相应的index.html文件,以获取Readability GradeReadability Score等的值(通过将这些值存储在本地存储中)
如果我分别使用html和JS代码,那么这些值是从本地存储中获取的,但是在我集成到php之后,它就不起作用了。
代码:

<?php
//error_reporting(0);

//Get Pub version
function get_version($path){
    $needle = "=";
    if(($pos = strpos($path, $needle)) != 0){
         $bits = str_split($path, $pos + strlen($needle));

         $integer_count = 0;
         for($x = 0; $x < strlen($bits[1]); $x++){
             if(is_numeric($bits[1][$x])){
                 $integer_count++;
             }else{
                 break;
             }
         }
         if($integer_count > 0){
             $bits = str_split($bits[1], $integer_count);
            return  $bits[0];
         }
    }
    return -1;
}


$it = new RecursiveDirectoryIterator("C:\Users\Sachin_S2\Desktop\Script");

foreach(new RecursiveIteratorIterator($it,RecursiveIteratorIterator::SELF_FIRST) as $file) {

    //IGNORE FILE TYPES
    //$filetypes = array("jpg", "png", "pdf", "css", "csv","log","txt");
    $htmlfiles = array("html");
    $filetype = pathinfo($file, PATHINFO_EXTENSION);
    if (in_array(strtolower($filetype), $htmlfiles)) {

        // skip dot files while iterating
        $it->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);

        $files = array($file);
        $pathname = $file->getPathname();
        print_r($pathname);

        $version = get_version($pathname);
        if($version > 0){
            // use $version to read correct file
            include 'html/home.html';
        }
        echo '*********************************************************************************'.'<br/><br/>';

    }
}

html/home.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">
  <title>SEO Metrics</title>
</head>

<body>
        <!--Begin script code-->
        <form name="myform3">
            <!--
            <input type="hidden" name="formvar" value="">
            <input type="file" name="file" id="file">
            <p id="demo"></p><br/><br/>
            -->

            <div class="form-group">
              <label>Readability Grade:</label>
              <input type="text" class="form-control" id="grade">
            </div>
            <div class="form-group">
              <label>Readability Score:</label>
              <input type="text" class="form-control" id="score">
            </div>
            <div class="form-group">
              <label>Total Word Count:</label>
              <input type="text" class="form-control" id="words">
            </div>
        </form>
        <!--END script code-->

      <!--Custom JS code-->
      <script src="js/home.js"></script>
</body>
</html>

js/主页.js
$(document).ready(function() {


document.getElementById('file').onchange = function() {

    const file = this.files[0];
    const reader = new FileReader();

    reader.onload = (event) => {
      const file = event.target.result;
      const allLines = file.split(/\r\n|\n/);
      let arr = allLines;


      arr.forEach((kv) => {
        if (kv.includes("Flesh-Kincaid Grade Level")) {
                var fetch_grade = kv.replace(/<\/?[^>]+(>|$)/g, "");
                var formated_grade = fetch_grade.split(":").pop();          //Remove part of the string before ":"
                localStorage.setItem("Readability_Grade", formated_grade);

                document.getElementById('grade').value = localStorage.getItem("Readability_Grade").replace(/\s/g, "");  //Assign localStorage to text box
                localStorage["Readability_Grade"] = grade.value;
                //alert(formatedgrade);
        }
        if (kv.includes("Flesh Reading Ease Score")) {
                var fetch_score = kv.replace(/<\/?[^>]+(>|$)/g, "");
                var formated_score = fetch_score.split(":").pop();
                localStorage.setItem('Readability_Score', formated_score);
                document.getElementById('score').value = localStorage.getItem("Readability_Score").replace(/\s/g, "");
                //alert(formatedscore);
        }
        if (kv.includes("Reuse Metrics Score")) {
                var metricscore = kv;
                //alert(metricscore);
        }
        if (kv.includes("Total words")) {
                var totalwords = kv.replace(/<\/?[^>]+(>|$)/g, "");
                var total_words_formated = totalwords.split(":").pop();
                localStorage.setItem('Word_Count', total_words_formated);
                document.getElementById('words').value = localStorage.getItem("Word_Count").replace(/\s/g, "");
                //alert(totalwords);
        }
     });
  };

    reader.onerror = (event) => {
      alert(event.target.error.name);
    };

    reader.readAsText(file);
  };

});

输出:
在阅读这个php脚本时,我应该能够读取索引html(基于pubname和version的每个文件路径),并获得Readability_Grade和score等值,这是我无法获得的。
javascript - PHP根据路径名读取文件内容-LMLPHP

最佳答案

首先从字符串中获取版本号,下面是一个方法。

function get_version($path){
    $needle = "Pub=";
    if(($pos = strpos($path, $needle)) != 0){
         $bits = str_split($path, $pos + strlen($needle));

         $integer_count = 0;
         for($x = 0; $x < strlen($bits[1]); $x++){
             if(is_numeric($bits[1][$x])){
                 $integer_count++;
             }else{
                 break;
             }
         }
         if($integer_count > 0){
             $bits = str_split($bits[1], $integer_count);
            return  $bits[0];
         }
    }
    return -1;
}

然后你就可以这样用了。
foreach ($paths as $path){
    $version = get_version($path);
    if($version > 0){
        // use $version to read correct file
    }
}

如果我没听懂你的问题。
免责声明:快速键入,但应该工作。

关于javascript - PHP根据路径名读取文件内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57375628/

10-11 22:12
查看更多