PHP - 搜索.txt文件中的单词

时间:2017-11-05 19:20:03

标签: php html

我刚学会了一些html和php的基本技能,希望有人能帮助我。

我创建了一个html文件(a.html),其中包含一个表单,允许学生输入他们的姓名,学生ID,班级和班级编号。

然后,我创建了一个php文件(a.php),将a.html中的信息保存到info.txt文件中,格式如下:

  

name1,id1,classA,1

     

name2,id2,classB,24

     

name3,id3,classA,15

等(上面的部分已经完成没有问题)。

之后我创建了另一个html文件(b.html),要求用户在表单中输入他们的名字和id。

例如,如果用户在表单中输入name2和id2,则php文件(b.php)将打印结果:

  

班级:classB

     

班级编号:24

我不知道如何在txt文件中同时匹配name和id,并在b.php中返回结果

5 个答案:

答案 0 :(得分:1)

迭代直到你找到匹配为止。例如:

<?php

$csv=<<<CSV
John,1,A
Jane,2,B
Joe,3,C
CSV;

$data = array_map('str_getcsv', explode("\n", $csv));    

$get_name = function($number, $letter) use ($data) {
    foreach($data as $row)
        if($row[1] == $number && $row[2] == $letter)
            return $row[0];
};

echo $get_name('3', 'C');

输出:

    Joe

答案 1 :(得分:0)

你可以使用一些简单的正则表达式。例如:

<?php
$search_name = (isset($_POST['name'])) ? $_POST['name'] : exit('Name input required.');
$search_id = (isset($_POST['id'])) ? $_POST['id'] : exit('ID input required.');

// First we load the data of info.txt
$data = file_get_contents('info.txt');

// Then we create a array of lines
$lines = preg_split('#\\n#', $data);

// Now we can loop the lines
foreach($lines as $line){

    // Now we split the line into parts using the , seperator
    $line_parts = preg_split('#\,#', $line);

    // $line_parts[0] contains the name, $line_parts[1] contains the id
    if($line_parts[0] == $search_name && $line_parts[1] == $search_id){
        echo 'Class: '.$line_parts[2].'<br>';
        echo 'Class Number: '.$line_parts[3];

        // No need to execute the script any further.
        break;
    }

}

答案 2 :(得分:0)

你可以运行它。我认为这是你需要的。此外,如果你使用帖子,你可以改变发布。

<?php
$name = $_GET['name'];
$id = $_GET['id'];
$students = fopen('info.txt', 'r');
echo "<pre>";
// read each line of the file one by one
while( $student = fgets($students) ) {
    // split the file and create an array using the ',' delimiter
    $student_attrs = explode(',',$student);
    // first element of the array is the user name and second the id
    if($student_attrs[0]==$name && $student_attrs[1]==$id){
        $result = $student_attrs;
        // stop the loop when it is found
        break;
    }
}
fclose($students);
echo "Class: ".$result[2]."\n";
echo "Class Number: ".$result[3]."\n";
echo "</pre>";

答案 3 :(得分:0)

strpos可以帮助您在文件中找到匹配项。此脚本假定您使用换行符分隔文本文件中的行,并且每个名称/ ID配对在文件中都是唯一的。

function wc_add_custom_order_column_content( $column ) {
    global $post, $the_order;

    if ( empty( $the_order ) || $the_order->get_id() !== $post->ID ) {
        $the_order = wc_get_order( $post->ID );
    }

    // Only continue if we have an order.
    if ( empty( $the_order ) ) {
        return;
    }

    if ( 'custom_column' === $column ) {
        // Use order class getters to retrieve what you need.
        echo $the_order->get_formatted_order_total();
        // Or, if it's not a core field, it may be in meta.
        // echo $the_order->get_meta('_some_meta_key');
    }
}

add_action( 'manage_shop_order_posts_custom_column', 'wc_add_custom_order_column_content' );

答案 4 :(得分:0)

  example data:
  name1,id1,classA,1
  name2,id2,classB,24
  name3,id3,classA,15
<?php
    $name2 = $_POST['name2'];
    $id2 = $_POST['id2'];
    $data = file_get_contents('info.txt');

    if($name2!='')
        $konum = strpos($data, $name2);
    elseif($id2!='')
        $konum = strpos($data, $id2);

    if($konum!==false){
        $end = strpos($data, "\n", $konum);
        $start = strrpos($data, "\n", (0-$end));
        $row_string = substr($data, $start, ($end - $start));
        $row = explode(",",$row_string);
        echo 'Class : '.$row[2].'<br />';
        echo 'Number : '.$row[3].'<br />';
    }
    ?>