PHP IF语句如何编写它更优雅和有效

时间:2012-03-21 16:10:28

标签: php

我现在根据以下一些答案获得此代码。

这是最优雅,干净,快速和有效的代码吗?

<?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 ?>

7 个答案:

答案 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;
}