嘿我正试图通过我的Google adwords广告系列为我的网站访问者显示不同的电话号码。
以下代码在没有else语句的情况下工作(因此,如果我点击Google的页面,它将显示一条消息,如果我定期访问该网站则不会)。当我添加else语句时,它会输出两个数字。谢谢
<?php
// The domain list.
$domains = Array('googleadservices.com', 'google.com');
$url_info = parse_url($_SERVER['HTTP_REFERER']);
if (isset($url_info['host'])) {
foreach($domains as $domain) {
if (substr($url_info['host'], -strlen($domain)) == $domain) {
// GOOGLE NUMBER HERE
echo ('1234');
}
// REGULAR NUMBER HERE
else {
echo ('12345');
}
}
}
?>
答案 0 :(得分:1)
你的逻辑略有偏差;您正在检查来自parse_url
的网址是否与您阵列中的域匹配;但是你每次都要经历整个阵列。所以你得到一个匹配和一个不匹配,因为google.com
匹配一个条目而不匹配另一个条目。
我建议将域数组转换为关联数组:
$domains = Array('googleadservices.com' => '1234',
'google.com' => '12345' );
然后你只需要检查一次:
if (isset($url_info['host'])) {
if (isset($domains[$url_info['host']])) {
echo $domains[$url_info['host']];
}
}
我没有测试过这个,但它应该足以让你看到逻辑。
(我还删除了substr
支票 - 您可能需要将其重新插入,以确保您获得了需要查找的确切字符串。