Как показать конкретное содержимое в PHP?

В моем хостинге содержатся некоторые файлы: 1.txt, 2.txt, …, 1000.txt
Когда я набираю доступ к ЛЮБОМ URL, который содержит номер, будет показано содержимое файла, соответствующего этому номеру.

Например: когда я получаю доступ:

http://mywebsite.com/something-9-keyword ----> content of 9.txt will be showed
http://mywebsite.com/2-anything-keyword ------> content of 2.txt will be showed
http://mywebsite.com/how-to-show-content-3 ------> content of 3.txt will be showed

Как это сделать с помощью PHP? Большое спасибо !

0

Решение

(Опция 1) Получение идентификатора файла с использованием файла Apache .htaccess:

RewriteEngine On
RewriteRule .*?(\d+).* %{QUERY_STRING}?textFileId=$1 [L]

(а потом в PHP)

$textFileId = $_GET['textFileId'];

(Вариант № 2) Получение идентификатора файла с использованием только PHP:

if(preg_match("#.*?(\d+).*#", $_SERVER['REQUEST_URI'], $matches)) {
$textFileId = $matches[1];
}

После сортировки вы можете включить текстовый файл в шаблон PHP / HTML:

<!DOCTYPE html>
(etc, etc)
<body>
<div id="stuff">
<?php include("$textFileId.txt"); ?>
</div>
</body>
0

Другие решения

Вы можете поместить файл .htaccess в корневой каталог вашего домена, содержащий:

RewriteEngine On
RewriteRule .*?(\d+).* $1.txt [L]

Это отсканирует и перепишет запрос, как вы упоминали ранее. Имейте в виду, что будет использоваться только первый номер, поэтому /something-91-keyword-43-foo будет переписан в /91.txt,

Я предполагаю, что:

  • Ваш сайт размещен с использованием Apache
  • Конфигурация Apache вашего домена имеет «AllowOverride All» для каталога, в который вы помещаете файл .htaccess.
1