Я не знал, какой заголовок использовать, потому что это довольно необычная ситуация. Пожалуйста, позвольте мне объяснить. У меня есть сайт с несколькими страницами, и у каждого есть разные метатеги, такие как заголовок, описание и ключевые слова. Итак, я сделал этот код:
define('title', 0);
define('keywords', 1);
define('desc', 2);
$tags = array(
'index' => array('My site', 'php, tricks', 'My site about php'),
'about' => array('About', 'etc, about', 'About this site'),
'other' => array('Other', 'some, shit', 'Some other shit')
);
Страницы моего сайта выглядят так: mysite.com/index
, mysite.com/about
и т. д. и, следовательно, у меня есть каталог со всеми теми страницами, которые названы index.php
, about.php
и так далее. Поэтому, если я хочу добавить новую страницу с именем contact, я должен создать файл с именем contact.php
и добавьте новую строку в мой массив следующим образом:
$tags = array(
'index' => array('My site', 'php, tricks', 'My site about php'),
'about' => array('About', 'etc, about', 'About this site'),
'other' => array('Other', 'some, shit', 'Some other shit'),
'contact' => array('Contact', 'contact, whatever', 'Contact form')
);
Это работает отлично до сих пор. Тем не менее, теперь у меня есть группа страниц, которые начинаются с column-
и я хочу, чтобы они автоматически добавляли свои теги, не добавляя больше строк в код. Что-то вроде этого:
$tags = array(
'index' => array('My site', 'php, tricks', 'My site about php'),
'about' => array('About', 'etc, about', 'About this site'),
'other' => array('Other', 'some, shit', 'Some other shit'),
$column_pages => array($col_title, $col_keywords, $col_desc)
);
Я предполагаю, что я должен просканировать мой каталог на наличие файлов, чтобы сначала получить имена, а затем отфильтровать те, которые начинаются с «column-»:
$column_page = scandir("content");
foreach ($column_page as $value) {
if(preg_match("/column/i", $value)) {
$column_pages = $value;
}
}
но после этого я вроде застрял, и у меня нет идеи, как идти дальше. Что мне теперь делать?
Что мне нужно , чтобы выразить это ясными словами, я хочу просканировать все имена файлов в определенной папке / каталоге, проверить, начинается ли его имя с column-
а затем генерировать атрибуты автоматически с помощью PHP
Например, Предполагая, что на данный момент у меня есть 3 файла, начинающиеся с «column-«, которые:
column-news
, column-variety
а также column-radio
; мой ожидаемый результат — это то, что работает точно так же, как этот код ниже:
$tags = array(
'index' => array('My site', 'php, tricks', 'My site about php'),
'about' => array('About', 'etc, about', 'About this site'),
'other' => array('Other', 'some, shit', 'Some other shit'),
'column-news' => array('News', 'some, news', 'Column with news'),
'column-variety' => array('News', 'some, variety', 'Column with variety'),
'column-radio' => array('News', 'some, radio', 'Column with radio')
);
Спасибо.
Вот один из способов сделать это
сканировать все каталоги
делать regex
соответствует шаблону в имени файла
сохранить в массиве, если совпадение найдено
Код
$pattern = "/^column-*/i" //i for making it case insensitive, ^ denotes start of name
$path = "some/dir/path/";
$files = scandir($path);
foreach ($files as $file_name) {
if(preg_match($pattern, $file_name){
$column_pieces = explode("-", $file_name);
$tags = array($file_name =>
array($column_pieces[0], $column_pieces[1], $column_pieces[2])
);
}
}
В этой строке кода:
$tags = array($file_name =>
array($column_pieces[0], $column_pieces[1], $column_pieces[2])
);
$file_name
будет вашим ключом и $column_pieces[XX]
необязательно только для того, чтобы показать вам, как это будет сделано, вы можете сохранить в нем другие данные, которые вы можете получить из БД
Других решений пока нет …