3

Web サイトにタグ システムを実装したいと考えています。Web サイトは PHP で作成されていますが、データベース (SQL) システムは使用していません。プレーン テキスト ファイルからファイルを読み取り、それらを含めます。

ページがファイルの読み取りを要求された場合、ページはファイル内にあり、ページがそこにある場合、サイトはそれを返します。ページがそこにない場合、エラーが発生します (パストラバーサルの問題がないため、ページ「blablabla」を「other-page.inc.php」に移動させることができます)。

ページ リストは、次のような大きなケース ステートメントです。

case "faq":
$s_inc_page= $s_contentdir .  "static/faq.php";
$s_pagetitle="FAQ";
$s_pagetype="none";
break;

($s_pageype は css テーマ用です)。

私が欲しいのは次のようなものです:

case "article-about-cars":
$s_inc_page= $s_contentdir .  "article/vehicles/about-cars.php";
$s_pagetitle="Article about Cars";
$s_pagetype="article";
$s_tags=array("car","mercedes","volvo","gmc");
break;

そして、タグを get 変数として受け取るタグ ページは、どのケースが $s_tag 配列にそのタグを持っているかをチェックし、それらのケースを返します。

これは可能ですか、それとも間違った方向に考えていますか?

4

2 に答える 2

1

ページの詳細を次のような配列に保持することでこれを行います。

$pages['faq']['s_inc_page'] = $s_contentdir .  "static/faq.php";
$pages['faq']['s_pagetitle'] = "FAQ";
$pages['faq']['s_pagetype'] = "none";
$pages['faq']['s_tags'] = array("car","mercedes","volvo","gmc");

次に、ループを使用しforeachてこの配列を調べ、一致するタグを持つアイテムを引き出すことができます。

$tag = "car";

foreach($pages as $page) {
    if (in_array($tag, $page['s_tags'])) {
        //do whatever you want to do with the matches
        echo $page['s_pagetitle'];
    }   
}
于 2012-06-14T12:58:22.683 に答える
0

可能ですが、現在の構造の外で考える必要があるかもしれません。

次のようなものが機能します。

$pages = array(
    "article-about-cars" => array ("car", "mercedes", "volvo"),
    "article-about-planes" => array ("757", "747", "737")
); //an array containing page names and tags

foreach ($pages as $key => $value) {
   if (in_array($_GET['tag'], $value)) {
       $found_pages[] =  $key;
   }
}

return $found_pages; //returns an array of pages that include the tag
于 2012-06-14T12:54:31.483 に答える