У меня есть код PHP, который читает файлы ТЕКСТ и выполняет поиск по строке на основе запроса пользователя. система отобразит результат в таблице, содержащей имя файла и номер строки , где оно существует.

У каждого ТЕКСТОВОГО файла есть еще одна его копия в виде ФАЙЛА PDF в той же папке.

Мне нужно сделать ТЕКСТОВЫЙ файл гиперссылкой на ФАЙЛ PDF.

До сих пор мне удавалось сделать гиперссылку на ТЕКСТОВЫЕ файлы

Я знаю, что у этой строки должно быть расширение, но я не знаю, как добавить:

$filenameHtml .= "<th><a href ='".$filename."' target='_blank'>$filename</a></th>";

Снимок экрана:

отображаемый результат

Код:

 <?php

$result = [];
if(isset($_POST["search"]))
{
    $search =$_POST['name'];
    echo "the word  $search exist: <br><br>";
    foreach(glob($_SERVER['DOCUMENT_ROOT']."/readfiletest/*.txt") as $txts)
    {
        $line = 1;
        $temp   = [];
        $myFileLink = fopen($txts, 'r');
        while(!feof($myFileLink))
        {
            $myFileContents = fgets($myFileLink);
            if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
            {

                $temp['filename'] = basename ($txts);
                foreach($matches[1] as $match)
                {
                    $temp['lines'][] = $line;
                }
            }
            ++$line;
        }
        fclose($myFileLink);

        $result[] = $temp;
    }

    //display the table
    echo '<table border=2>';

    $filenameHtml    = '<tr>';
    $lineNumberHtml    = '<tr>';
    foreach ($result as $item){
     $filename = isset($item['filename']) ? $item['filename'] : '';
     $lines = isset($item['lines']) ? implode(',',$item['lines']) : '';
     //$filenameHtml .= "<th>$filename</th>";
     $filenameHtml .= "<th><a href ='".$filename."' target='_blank'>$filename</a></th>";
     $lineNumberHtml .= "<td>$lines</td>";
    }
    $filenameHtml    .= '</tr>';
    $lineNumberHtml  .= '</tr>';

    echo $filenameHtml.$lineNumberHtml;
    echo '</table>';
}
?>

<html>
    <head>
    </head>
    <meta http-equiv="Content-Language" content="ar-sa">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style>
          #form {
        background: -webkit-linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
        background: -moz-linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
        background: linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
        margin: auto;
        width: 200px;
        height: 200px;
        position: absolute;


        font-family: Tahoma, Geneva, sans-serif;
        font-size: 14px;
        font-style: italic;
        line-height: 24px;
        font-weight: bold;
        color: #09C;
        text-decoration: none;
        border-radius: 10px;
        padding: 10px;
        border: 1px solid #999;
        border: inset 1px solid #333;
        -webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
        -moz-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
        box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
      }

    </style
    <body>
    <div id = "form">
        <form action="index.php" method="post">
          <h1 align =center > Search Form </h1>
          <p>enter your string <input type ="text"  id = "idName"  name="name" /></p>
          <p align =center ><input type ="Submit" name ="search" value= "Search" /></p>
        </form>
    </div>
    </body>
</html>
0
Ghgh Lhlh 3 Янв 2018 в 14:16

2 ответа

Лучший ответ

Вы можете использовать str_replace, чтобы изменить расширение в переменной $ filename на .pdf с .txt.

$new_filename = str_replace('.txt', '.pdf', $filename);
0
Mcload 3 Янв 2018 в 12:02

Или, что еще лучше, вы можете прочитать весь текстовый файл и сохранить его в переменной и использовать библиотеку PDF, такую как mpdf mpdf, для создания pdf

Или, если вы показываете эти данные в форме html, используйте printjs для создания pdf во время выполнения, что снизит нагрузку на сервер, а также сэкономит место.

0
Ronak Bokaria 3 Янв 2018 в 12:17