我正在网站上组建一个非常简单的广告服务器,其中包含php和mysql。该网站目前有4或5个静态页面,其中包含大量动态内容,因此网址如下所示:
index.php?pid=1
或content.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次或进行搜索。
答案 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
另外,我没有测试这段代码。我只是在没有检查功能等的情况下编写它。