我现在根据以下一些答案获得此代码。
这是最优雅,干净,快速和有效的代码吗?
<?php
/**
* The default template for displaying Google Analytics
*
* @package WordPress
* @subpackage News_Template
* @since News Template 1.0
*/
$googleanalyticscode="<script type='text/javascript'> var _gaq = _gaq || []; _gaq.push(['_setAccount', '%s']); _gaq.push(['_setDomainName', '%s']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>";
$analyticsurlgoogle=array(
'domain-a.com' => 'UA-25133-2',
'domain-b.com' => 'UA-25133',
'domain-c.com' => 'UA-2699-2',
'domain-d.com' => 'UA-3021-2',
'domain-e.com' => 'UA-25537-2',
'domain-f.com' => 'UA-7213-2',
'domain-g.com' => 'UA-7214-2',
'domain-h.com' => 'UA-150-2',
'domain-i.com' => 'UA-150-2'
);
// --- /Configuration ---
// Get the Domain URL
$analyticsurl = get_site_url();
$namegoogle = substr($analyticsurl,7);
//create code
if (isset($analyticsurlgoogle[$namegoogle])) $code=sprintf($googleanalyticscode,$analyticsurlgoogle[$namegoogle],$namegoogle);
else $code='';
echo $code; ?>
------上一个代码------
我在PHP中编写了以下if语句。编写此代码的最优雅,最有效和最干净的方法是什么?
代码的目的是检查站点的域名。如果网站定义了Google Analytics,则应该与该域定义的“Google Analytics”代码匹配,然后将该脚本打印到该页面。
如果未定义Google Analytics代码,则不应显示任何内容!
<?php
// Get the Domain URL
$analyticsurl = get_site_url();
// Check if domain is defined
if ($analyticsurl == 'http://domain-a.com') {$analyticcode = 'UA-25133920-1'; $analyticsurlname = 'domain-a.com';} // domain-a.com
if ($analyticsurl == 'http://domain-b.com') {$analyticcode = 'UA-25133920-1'; $analyticsurlname = 'domain-b.com';} // domain-b.com
if ($analyticsurl == 'http://domain-c.com') {$analyticcode = 'UA-26990264-1'; $analyticsurlname = 'domain-c.com';} // domain-c.com
if ($analyticsurl == 'http://domain-d.com') {$analyticcode = 'UA-30217571-1'; $analyticsurlname = 'domain-d.com';} // domain-d.com
if ($analyticsurl == 'http://domain-e.com') {$analyticcode = 'UA-25537388-1'; $analyticsurlname = 'domain-e.com';} // domain-e.com
// if domain is defined create Google Analytics Code and insert variables
$analyticscode_1 = "<script type='text/javascript'>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '".$analyticcode."']);
_gaq.push(['_setDomainName', '".$analyticsurlname."']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>";
// if URL does not match write nothing
if ($analyticcode == '') {$analyticscode = '';}
// if URL exists set the Google Analytics Code
if ($analyticcode != '') {$analyticscode = $analyticscode_1;}
?>
<?php // write the Analytics code to the page
echo $analyticscode ?>
答案 0 :(得分:4)
使用parse_url解析url(或使用regexp删除http://部分)。
将所有代码放在一个数组中,其中key是域名。然后这是一个简单的查找。
$codes = array(
'domain-a.com' => 'UA-25133920-1',
//...
);
答案 1 :(得分:2)
<?php
// --- Configuration ---
$template="<script type ...
_gaq.push(['_setAccount', '%s']);
_gaq.push(['_setDomainName', '%s']);
...
</script>";
$urls=array(
'domain-a.com' => 'UA-25133920-1',
...
'domain-e.com' => 'UA-25537388-1'
);
// --- /Configuration ---
// Get the Domain URL
$url = get_site_url();
$name = substr($analyticsurl,7);
//create code
if (isset($urls[$name])) $code=sprintf($template,$urls[$name],$name);
else $code='';
// ...
echo $code;
?>
答案 2 :(得分:1)
switch
声明。
答案 3 :(得分:1)
我会将所有记录保存在一个数组中,这样我就不会一次又一次地重复这个条件。
$siteurl = get_site_url();
$analyticsurl = array(
'http://domain-a.com' => 'UA-25133920-1',
'http://domain-b.com' => 'UA-25133920-1',
'http://domain-c.com' => 'UA-26990264-1',
'http://domain-d.com' => 'UA-30217571-1',
'http://domain-e.com' => 'UA-25537388-1'
);
if(in_array($siteurl, $analyticsurl)) {
$analyticcode = $analyticsurl[$siteurl];
$analyticsurlname = str_replace('http://', '', $siteurl);
}
答案 4 :(得分:0)
考虑使用switch语句:
switch ($analyticsurl)
{
case: 'http://domain-a.com':
// do some stuff
break;
case: 'http://domain-b.com':
// do some stuff
break;
case: 'http://domain-c.com':
// do some stuff
break;
case: 'http://domain-d.com':
// do some stuff
break;
case 'http://domain-e.com':
// do some stuff
break;
default:
// do something by default if no match
break;
}
答案 5 :(得分:0)
<?php
$domains['http://domain-a.com']['code'] = 'UA-25133920-1';
$domains['http://domain-a.com']['urlname'] = 'domain-a.com';
$domains['http://domain-b.com']['code'] = 'UA-25133920-1';
$domains['http://domain-b.com']['urlname'] = 'domain-b.com';
...
// Get the Domain URL
$analyticsurl = get_site_url();
// Check if domain is defined
if (array_key_exists($analyticsurl)) {
// if domain is defined create Google Analytics Code and insert variables
?>
<script type='text/javascript'>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '<?php= $domains[$analyticsurl]['code'] ?>']);
_gaq.push(['_setDomainName', '<?php= $domains[$analyticsurl]['urlname'] ?>']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<?php
}
?>
$domains['http://domain-b.com']['urlname'] = 'domain-b.com';
可以改进,因为你刚刚剥离了HTTP部分,但我太懒了,无法提供解决方案。
答案 6 :(得分:-1)
使用开关块:
switch ($analyticsurl) {
case: 'http://domain-a.com' :
$analyticcode = 'UA-25133920-1';
$analyticsurlname = 'domain-a.com';
break;
default:
break;
}