存储和检索URL列表的最佳方法

时间:2012-09-20 16:52:12

标签: php mysql

我正在网站上组建一个非常简单的广告服务器,其中包含php和mysql。该网站目前有4或5个静态页面,其中包含大量动态内容,因此网址如下所示: index.php?pid=1content.php?spec=2

我想要做的是在我的广告表中添加一个字段,以跟踪广告将要显示在哪个页面上。

我是否应该将包含广告的网址存储为逗号分隔值列表?

一旦我检索到这个变量,将值分成数组的最佳方法是什么?

分割字符串的最佳方法是什么,以便我可以使用上面的示例拆分页面名称$_GET名称和变量(如'index,pid,1'或'content,spec,2')。 ??

其他信息: 例如,doctors.php的结构如下:

  • doctors.php Doctor Specialties列表
  • doctors.php?spec=#有特定医生的名单 专业
  • doctors.php?pid=#一个具体的医生信息

我有几十个专业,还有几百名医生。我希望能够在特定网页/网址上投放广告,比如doctors.php?pid=7

但我也希望能够根据所有具有ID为6的专业医生来制作广告。这可能是60多页,所以拥有它真的没有意义单独的表行。如果我需要更改广告上的链接,我不想将其更改60次或进行搜索。

4 个答案:

答案 0 :(得分:2)

不要以CSV格式存储。

为每个广告/网址组合添加单独的数据库行。

然后检索内容将是微不足道的。

答案 1 :(得分:0)

在简单文件中每行存储一个URls。你可以使用php函数“file”将这个文件作为数组读取。

对于网址拆分使用http://php.net/parse_url功能

答案 2 :(得分:0)

这是我认为可行的......

我的广告表将有三个变量,(a,b,c)

如果我在doctors.php?spec=12上放置了广告,我会存储以下内容:

  • a = 'doctors';
  • b = 'spec';
  • c = '12';

如果广告要显示在所有专业页面上,我会存储:

  • a = 'doctors';
  • b = 'spec';
  • c = NULL;

如果某些内容为NULL,则只会指示所有内容。这似乎是一个优雅的解决方案,如果有效,我会发布代码。

答案 3 :(得分:-1)

$url = "index.php?pid=1";
$pos = strpos($url, "?");

if ($pos != false) {
  $pieces1 = explode("?", $url);
  $pieces2 = explode("=", $pieces1[1]);
  $array = array($pieces1[0], $pieces2[0], $pieces2[1]);
}else{
  $array = array($url, '', '');
}

print_r($array);

如果你希望它能用于你的网址中的多个变量,你需要改进这个代码:index.php?v = hello& t = world

另外,我没有测试这段代码。我只是在没有检查功能等的情况下编写它。