2012-04-24 143 views
0

我提前道歉,如果这是模糊的,我有这个现在争夺在附近的10小时,也毫无进展......显示正确的数据

我的客户已经通过他们的SEO拧了公司,我正在努力帮助他们挽救他们的业务。我们遇到的一个主要问题是他们的网站内容依赖于他们的SEO公司网站上托管的数据源。主要城镇周围不同区域的内容由该脚本自动生成。部分脚本托管在客户端服务器上,并与馈送进行通信。

我发现了一个JSON文件,其中包含该提要使用的所有数据,但我正努力让脚本读取此文件。

似乎有2个函数我应该对generateContentFromFeed和generateTextFromFile感兴趣。目前它似乎使用generateContentFromFeed(但可能使用generateTextFromFile elsehwere,但我很确定它不是,如果你不想从外部获取数据,我相信这个函数就在那里)。

我曾试着交换函数,并改变配置文件中的源的源,但没有喜悦。所有这些都是输出json文件的全部内容。

文件如下:

content.class.php

<?php 

/** 
* This class manipulates content from files/JSON into an array 
* Also includes helpful functions for formatting content 
*/ 

class Content { 

public $links = array(); 
public $replacements = array(); 

private function stripslashes_gpc($string) { 

    if (get_magic_quotes_gpc()) { 

     return stripslashes($string); 

    } else { 

     return $string; 

    } 

} 

private function sourceContentToArray($source) { 

    // array 
    if (is_array($source)) { 

     $array = $source; 

    // json 
    } elseif (json_decode($source) != FALSE || json_decode($source) != NULL) { 

     $array = json_decode($source, 1); 

    // file 
    } elseif (file_exists($source)) { 

     if (!$array = json_decode(file_get_contents($source), 1)) { 

      echo "File empty or corrupt"; 
      return false; 

     } 

    } else { 

     echo 'Source content not recognised'; 
     return false; 

    } 

    return $array; 

} 

public function generateContent($source, $type="paragraph", $label="", $subject, $num=0, $randomize_order=false) { 

    if (!$array = $this->sourceContentToArray($source)) 
     return false; 

    $array = empty($this->links) ? $this->loadLinks($array, $subject) : $array; 
    $this->loadGlobalReplacements($array, $subject); 

    $ca = array(); 
    foreach ($array['content'] as $c) { 

     if ($c['type'] == $type) { 

      if (empty($label) || (!empty($label) && $c['label'] == $label)) { 

       $ca[] = $c; 

      } 

     } 

    } 

    $rc = array(); 
    foreach ($ca as $k => $a) { 

     $rc[] = $this->randomizeContent($a, $subject.$k); 

    } 

    if ((!is_array($num) && $num >= 1) || (is_array($num) && $num[0] >= 1)) { 

     $rc = $this->arraySliceByInteger($rc, $subject, $num); 

    } else if ((!is_array($num) && $num > 0 && $num < 1) || (is_array($num) && $num[0] > 0 && $num[0] < 1)) { 

     $rc = $this->arraySliceByPercentage($rc, $subject, $num); 

    } else { 

     if ($randomize_order == true) 
      $rc = $this->arraySliceByPercentage($rc, $subject, 1); 

    } 

    return $rc; 

} 

public function formatContent($source, $type, $subject, $find_replace=array()) { 

    $c = ""; 

    foreach ($source as $k => $s) { 

     $text = ""; 
     if ($type == "list" || $type == "paragraph") { 

      $text .= "<h3>"; 
      foreach ($s['title'] as $t) { 

       $text .= $t." "; 

      } 
      $text .= "</h3>"; 

     } 

     if ($type == "list") { 

      $text .= "<ul>"; 

     } else if ($type == "paragraph") { 

      $text .= "<p>"; 

     } 

     foreach ($s['parts'] as $b) { 

      if ($type == "list") 
       $text .= "<li>"; 

      $text .= $b." "; 

      if ($type == "list") 
       $text .= "</li>"; 

     } 

     if ($type == "list") { 

      $text .= "</ul>"; 

     } else if ($type == "paragraph") { 

      $text .= "</p>"; 

     } 

     $text = $this->findReplace($s['replacements'], $text, $subject.$k."1"); 
     $text = $this->injectLinks($this->links, $text, $subject.$k."2"); 
     $text = $this->findReplace($this->replacements, $text, $subject.$k."3"); 
     $text = $this->findReplace($find_replace, $text, $subject.$k."4"); 
     $text = $this->aAnReplacement($text); 
     $text = $this->capitaliseFirstLetterOfSentences($text); 

     $c .= $this->stripslashes_gpc($text); 

    } 

    return $c; 

} 

public function injectLinks($links, $text, $subject) { 

    global $randomizer; 

    if (empty($links)) 
     return $text; 

    foreach ($links as $k => $link) { 

     $_link = array(); 
     if (preg_match("/\{L".($k+1)."\}/", $text)) { 

      preg_match_all("/\{L".($k+1)."\}/", $text, $vars); 

      foreach ($vars[0] as $vark => $varv) { 

       $_link['link'] = empty($_link['link']) ? $this->links[$k]['link'] : $_link['link']; 
       $l_link = $randomizer->fetchEncryptedRandomPhrase($_link['link'], 1, $subject.$k.$vark); 
       unset($_link['link'][array_search($l_link, $_link['link'])]); 
       $_link['link'] = array_values($_link['link']); 

       $_link['text'] = empty($_link['text']) ? $this->links[$k]['text'] : $_link['text']; 
       $l_text = $randomizer->fetchEncryptedRandomPhrase($_link['text'], 2, $subject.$k.$vark); 
       unset($_link['text'][array_search($l_text, $_link['text'])]); 
       $_link['text'] = array_values($_link['text']); 

       $link_html = empty($l_link) ? $l_text : "<a href=\"".$l_link."\">".$l_text."</a>"; 
       $text = preg_replace("/\{L".($k+1)."\}/", $link_html, $text, 1); 
       $this->removeUsedLinksFromPool($l_link); 

      } 

     } 

    } 

    return $text; 

} 

private function loadLinks($source, $subject) { 

    global $randomizer; 

    if (!empty($source['links'])) { 

     foreach ($source['links'] as $k => $l) { 

      $source['links'][$k]['link'] = preg_split("/\r?\n/", trim($l['link'])); 
      $source['links'][$k]['text'] = preg_split("/\r?\n/", trim($l['text'])); 

     } 

     $this->links = $source['links']; 

    } 

    return $source; 

} 

private function loadGlobalReplacements($source, $subject) { 

    global $randomizer; 

    $source['replacements'] = $this->removeEmptyIndexes($source['replacements']); 
    foreach ($source['replacements'] as $k => $l) { 

     $source['replacements'][$k] = preg_split("/\r?\n/", trim($l)); 

    } 

    $this->replacements = $source['replacements']; 
    return $source; 

} 

private function removeUsedLinksFromPool($link) { 

    foreach ($this->links as $key => $links) { 

     foreach ($links['link'] as $k => $l) { 

      if ($l == $link) { 

       unset($this->links[$key]['link'][$k]); 

      } 

     } 

    } 

} 

private function randomizeContent($source, $subject) { 

    global $randomizer; 

    $source['title'] = $this->removeEmptyIndexes($source['title']); 
    foreach ($source['title'] as $k => $t) { 

     $source['title'][$k] = trim($randomizer->fetchEncryptedRandomPhrase(preg_split("/\r?\n/", trim($t)), 1, $subject.$k)); 

    } 

    $source['parts'] = $this->removeEmptyIndexes($source['parts']); 
    foreach ($source['parts'] as $k => $b) { 

     $source['parts'][$k] = trim($randomizer->fetchEncryptedRandomPhrase(preg_split("/\r?\n/", trim($b)), 2, $subject.$k)); 

    } 


    $source['structure'] = trim($source['structure']); 
    if ($source['type'] == "list") { 

     $source['parts'] = array_values($source['parts']); 
     $source['parts'] = $randomizer->randomShuffle($source['parts'], $subject."9"); 

    } else if ($source['structure'] != "") { 

     $source['structure'] = $randomizer->fetchEncryptedRandomPhrase(preg_split("/\r?\n/", $source['structure']), 3, $subject); 
     preg_match_all("/(\{[0-9]{1,2}\})/", $source['structure'], $matches); 

     $sc = array(); 
     foreach ($matches[0] as $match) { 

      $sc[] = str_replace(array("{", "}"), "", $match); 

     } 

     $bs = array(); 
     foreach ($sc as $s) { 

      $bs[] = $source['parts'][$s]; 

     } 

     $source['parts'] = $bs; 

    } 

    $source['replacements'] = $this->removeEmptyIndexes($source['replacements']); 
    foreach ($source['replacements'] as $k => $r) { 

     $source['replacements'][$k] = preg_split("/\r?\n/", trim($r)); 

    } 

    return $source; 

} 

private function removeEmptyIndexes($array, $reset_keys=false) { 

    foreach($array as $key => $value) { 

     if ($value == "") { 

      unset($array[$key]); 

     } 

    } 

    if (!empty($reset_keys)) 
     $array = array_values($array); 

    return $array; 

} 

private function arraySliceByPercentage($array, $subject, $decimal=0.6) { 

    global $randomizer; 

    $array = $randomizer->randomShuffle($array, $subject); 

    if (is_array($decimal)) 
     $decimal = $randomizer->fetchEncryptedRandomPhrase(range($decimal[0], $decimal[1], 0.1), 1, $subject); 

    $ac = count($array); 
    $n = ceil($ac * $decimal); 

    $new_array = array_slice($array, 0, $n); 

    return $new_array; 

} 

private function arraySliceByInteger($array, $subject, $number=10) { 

    global $randomizer; 

    $array = $randomizer->randomShuffle($array, $subject); 

    if (is_array($number)) 
     $number = $randomizer->fetchEncryptedRandomPhrase(range($number[0], $number[1]), 1, $subject); 

    $new_array = array_slice($array, 0, $number); 

    return $new_array; 

} 

private function aAnReplacement($text) { 

    $irregular = array(

     "hour"  => "an", 
     "europe" => "a", 
     "unique" => "a", 
     "honest" => "an", 
     "one"  => "a" 

    ); 

    $text = preg_replace("/(^|\W)([aA])n ([^aAeEiIoOuU])/", "$1$2"." "."$3", $text); 
    $text = preg_replace("/(^|\W)([aA]) ([aAeEiIoOuU])/", "$1$2"."n "."$3", $text); 

    foreach ($irregular as $k => $v) { 

     if (preg_match("/(^|\W)an? ".$k."/i", $text)) { 

      $text = preg_replace("/(^|\W)an? (".$k.")/i", "$1".$v." "."$2", $text); 

     } 

    } 

    return $text; 

} 

private function capitaliseFirstLetterOfSentences($text) { 

    $text = preg_replace("/(<p>|<li>|^|[\n\t]|[\.\?\!]+\s)(<a.*?>)?(?!%)([a-z]{1})/se", "'$1$2'.strtoupper('$3')", $text); 
    return $text; 

} 

public function findReplace($find_replace, $input, $subject) { 

    global $randomizer; 
    if (!empty($find_replace)) { 

     foreach ($find_replace as $key => $val) { 

      if (is_array($val)) { 

       $fr = $val; 
       $pattern = "/".preg_quote($key)."/i"; 
       preg_match_all($pattern, $input, $vars); 

       foreach ($vars[0] as $vark => $varv) { 

        $fr = empty($fr) ? $val : $fr; 
        $new_val = $randomizer->fetchEncryptedRandomPhrase($fr, 1, $subject.$key.$vark); 
        unset($fr[array_search($new_val, $fr)]); 
        $fr = array_values($fr); 

        $input = preg_replace($pattern, $new_val, $input, 1); 

       } 

      } else { 

       $pattern = "/".preg_quote($key)."/i"; 
       $input = preg_replace($pattern, $val, $input); 

      } 

     } 

    } 

    return $input; 

} 

public function generateTextFromFile($file, $subject, $find_replace=array()) { 

    global $randomizer; 

    $content = trim(file_get_contents($file)); 
    $lines = preg_split("/\r?\n/s", $content); 

    $text = $randomizer->fetchEncryptedRandomPhrase($lines, 4, $subject); 
    $text = $this->findReplace($find_replace, $text, $subject); 

    return $text; 

} 

public function generateContentFromFeed($file, $type, $label="", $subject, $num=0, $find_replace=array()) { 

    global $cfg; 

    $vars = array ("api_key"  => $cfg['feed']['api_key'], 
        "subject"  => $subject, 
        "file"   => $file, 
        "type"   => $type, 
        "label"   => $label, 
        "num"   => $num, 
        "find_replace" => json_encode($find_replace)); 

    $encoded_vars = http_build_query($vars); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"http://feeds.redsauce.com/example/index.php"); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded_vars); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    $content = curl_exec($ch); 

    curl_close($ch); 

    return $content; 

} 

} 

?> 

的config.php

<?php 

// LOCAL SERVER 
// Paths 
$cfg['basedir'] = "public_html/directory/"; // change this for inlcudes and requires. 
$cfg['baseurl'] = "/directory/"; // change this for relative links and linking to images, media etc. 
$cfg['fullbaseurl'] = "http://customerssite.com/directory/"; // change this for absolute links and linking to pages 

/* 
// Database - local 
$cfg['database']['host'] = "127.0.0.1"; 
$cfg['database']['name'] = "username"; 
$cfg['database']['user'] = 'root'; // change this to the database user 
$cfg['database']['password'] = ''; // change this to the database password 
*/ 

// Database - web 
$cfg['database']['host'] = "localhost"; 
$cfg['database']['name'] = "db"; 
$cfg['database']['user'] = 'user'; // change this to the database user 
$cfg['database']['password'] = 'pass'; // change this to the database password 

// Errors 
$cfg['errors']['display'] = 1; // change this to display errors on or off (on for testing, off for production) 
$cfg['errors']['log'] = 0; // change this to log errors to /log/error.log 

// Caching 
$cfg['caching']['status'] = 0; // determines whether the cache is enabled. 1 for enabled, 0 for disabled 
$cfg['caching']['expiry_time'] = 604800; // determines expiry time of cached items (604800 = 14 days) 
$cfg['caching']['directory'] = $cfg['basedir']."public_html/_cache/"; // directory in which cached files are stored 

// Analytics 
$cfg['analytics']['status'] = 1; 
$cfg['analytics']['tracking_id'] = "UA-21030138-1"; 

// Javascript 
$cfg['maps']['status'] = 0; // load google maps javascript 
$cfg['jquery_ui']['status'] = 0; // load jquery ui javascript + css 

// Site defaults 
$cfg['site_name'] = "Customer"; // change this to the site name 
$cfg['default']['page_title'] = "Customer"; // change this to the default title of all pages 
$cfg['default']['page_description'] = "Customer"; // change this to the default meta-description of all pages 
$cfg['default']['email'] = "Customer"; // change this to the administrators email for receiving messages when users signup etc 
$cfg['default']['category']['id'] = 130; 

// Email 
$cfg['email']['address'] = "Customer"; // change this to the administrators email for receiving messages when users signup etc 
$cfg['email']['from'] = $cfg['site_name']." <Customer>"; // email will appear to have come from this address 
$cfg['email']['subject'] = "Enquiry from ".$cfg['site_name']; // subject of the email 
$cfg['email']['success_message'] = "Thank you for your enquiry. Someone will be in touch with you shortly."; // message to display if the email is sent successfully 
$cfg['email']['failure_message'] = "There was an error processing your enquiry. <a href=\"".$_SERVER['REQUEST_URI']."\">Please try again</a>."; // message to display if the email is not sent successfully 

// Content feed 
$cfg['feed']['api_key'] = "Customer"; // enter the unique content feed api key here 
$cfg['feed']['url'] = "http://feeds.customersseocompany.com/customer/index.php"; // URL to connect to to pull the content feed 

// Dates 
date_default_timezone_set('Europe/London'); 
$cfg['default']['date_format'] = "d/m/Y H:i:s"; 

// Options 
$cfg['listings']['type'] = "ajax"; // options are none (to display no listings), page (to display the listings on the page) or ajax (to load the listings via AJAX) 
$cfg['listings']['num_per_page'] = 10; // maximum number of listings to show per page 

// Routing 
$cfg['routes'] = array(

'category' => array(

    "(?P<category>.+?)-category", 
    "_pages/category.php" 

), 


't1' => array(

    "(?P<category>.+?)-in-(?P<t1_name>.+?)_(?P<county>.+)", 
    "_pages/tier1.php" 

), 

't1_map' => array(

    "t1-map-data-(?P<t1_name>.+)-(?P<page_num>[0-9]+)", 
    "_ajax/map-data.php" 

), 

't2_map' => array(

    "t2-map-data-(?P<t2_name>.+)-(?P<t1_name>.+)-(?P<page_num>[0-9]+)", 
    "_ajax/map-data.php" 

), 

'ajax_listings' => array(

    "ajax-listings-(?P<category>.+?)-(?P<t2_id>.+)-(?P<page_num>[0-9]+)", 
    "_ajax/listings.php" 

), 

'search' => array(

    "^search\/?$", 
    "_pages/search.php" 

), 

'single' => array(

    ".*?-(?P<listing_id>[0-9]+)", 
    "_pages/single.php" 

) 

); 

// Site specific 


// Encoding 
header('Content-type: text/html; charset=UTF-8'); 

?> 

在tier1.php(用于生成每个位置文件中使用的代码的一部分和关键字页面)生成段落文字:

<?php 

$randParas = array(1, 2, 3); 

$numParas = $randomizer -> fetchEncryptedRandomPhrase($randParas, 1, $_SERVER['REQUEST_URI']); 

$content = $content->generateContentFromFeed(

// file 
"categories/".$category[0]['category_slug']."/paragraphs", 

// type 
"paragraph", 

// label 
"", 

// subject 
$_SERVER['REQUEST_URI']."7", 

// num 
$numParas, 

// find_ replace 
array(

    "XX" => $t1_location[0]['definitive_name'], 
    "YY" => $cfg['site_name'] 

) 


); 


?> 

从JSON文件中的一个片段(我知道我已经粘贴代码早结束,我只是想在这里把它的一部分,该文件是巨大的!):

{"filename":" xx keywords","content":[{"title":{"1":"xx example\r\nexample in xx\r\nexample in the xx region\r\nexample in the xx area","2":"","3":"","4":""},"type":"paragraph","label":"","structure":"","parts":{"1":"Stylish and practical, a xx keyword \r\nPractical and stylish, a xx keyword \r\nUseful and pragmatic, a xx keyword \r\nPragmatic and useful, a xx keyword \r\nModern and convenient, a xx keyword ", 

如果您需要更多信息,请告诉我你需要什么。我真的很感激这个帮助,因为我真的想帮助这个客户。他们是不值得被负面SEO公司打击的伟大人物。

如果有人知道这个脚本是什么,最有用的是什么!然后,我可以购买/下载它,并使用这些数据生成我自己的Feed。

如果您可以帮助您生成Feed的代码,或者我应该如何从json文件中获取数据并正确过滤数据,那就太棒了!

非常感谢,

凯文

PS。对不起所有的代码,我之前被告知没有发布足够的!

编辑:这是我现在用下面的建议后的代码:

<?php 

$randParas = array(1, 2, 3); 

$numParas = $randomizer -> fetchEncryptedRandomPhrase($randParas, 1, $_SERVER['REQUEST_URI']); 

$content = $content->generateContent(

// file 
"content/categories/".$category[0]['category_slug']."/paragraphs.json", 

// type 
"paragraph", 

// label 
"", 

// subject 
$_SERVER['REQUEST_URI']."7", 

// num 
$numParas, 

// find_ replace 
array(

    "XX" => $t1_location[0]['definitive_name'], 
    "YY" => $cfg['site_name'] 

) 


); 



?> 

     <?php 

      if($numParas == '3'){ 

       $divClass = 'vertiCol'; 

      } 

      elseif($numParas == '2'){ 

       $divClass = 'vertiColDub'; 

      } 

      else { 

       $divClass = 'horizCol'; 

      } 

      $randImages = glob('_images/categories/'.$category[0]['category_slug'].'/*.jpg'); 
      $randImages = $randomizer->randomShuffle($randImages, $_SERVER['REQUEST_URI']); 

       $fc = preg_replace("/<h3>.*?<\/h3>/", "$0", $content);    
       $fc = preg_replace("/<h3>.*?<\/h3><p>.*?<\/p>/", "<div class=\"contCol ".$divClass."\">$0$1</div>", $content); 

      $fca = preg_split("/(\.|\?|\!)/", $fc, -1, PREG_SPLIT_DELIM_CAPTURE); 

      $prStr = ''; 

      foreach ($fca as $fck => $fcv) { 

       if ($fck % 3 == 0 && $fck != 0 && !in_array($fcv, array(".", "?", "!"))) 
        $prStr .= "</p>\n<p>"; 

        $prStr .= $fcv; 

      } 

      preg_match_all('/<div class="contCol '.$divClass.'"><h3>.*?<\/h3>.*?<\/div>/s', $prStr, $matches); 

      $randAlign = array(

       array('topleft'), 
       array('topright'), 
       #array('bottomleft'), 
      # array('bottomright') 

      ); 

      $i=0;     

       $randSelectAlign = $randomizer->fetchEncryptedRandomPhrase($randAlign, 0, $_SERVER['REQUEST_URI']);    
       $randSelectAlign = $randSelectAlign[0]; 



      foreach($matches[0] as $newPar){ 

       $i++; 


       if($randSelectAlign=='topleft'){ 

        echo str_replace('</h3><p>', '</h3><p><span class="imgWrap" style="float:left"><img src="'.$cfg['baseurl'].$randImages[$i].'" width="170" /></span>', $newPar); 

       } 

       elseif($randSelectAlign=='topright'){ 

        echo str_replace('</h3><p>', '</h3><p><span class="imgWrap" style="float:right"><img src="'.$cfg['baseurl'].$randImages[$i].'" width="170" /></span>', $newPar); 

       } 

       elseif($randSelectAlign=='bottomleft'){ 

        echo str_replace('</p></div>', '<span class="imgWrap" style="float:left"><img src="'.$cfg['baseurl'].$randImages[$i].'" width="170" /></span></div>', $newPar); 

       } 

       elseif($randSelectAlign=='bottomright'){ 

        echo str_replace('</p></div>', '<span class="imgWrap" style="float:right"><img src="'.$cfg['baseurl'].$randImages[$i].'" width="170" /></span></div>', $newPar); 

       } 

       else { 

       } 

       //randomly from float array based on server uri! 

       //randomly select a way to display the images here etc  
       # 

      } 

    ?> 

这是给我以下错误消息:在/ home /帐号数组字符串转换:

公告/public_html/subdomain/directory/_pages/tier1.php上线230

通知:Array对字符串的转换在/home/account/public_html/subdomain/directory/_pages/tier1.php上线231

警告:使preg_split()预计参数2为字符串,阵列中的给定/home/account/public_html/subdomain/directory/_pages/tier1.php在线路233

警告:在提供的foreach无效的参数() /home/account/public_html/subdomain/directory/_pages/tier1.php线237个

这些代码行是:

230 $fc = preg_replace("/<h3>.*?<\/h3>/", "$0", $content);    
231 $fc = preg_replace("/<h3>.*?<\/h3><p>.*?<\/p>/", "<div class=\"contCol ".$divClass."\">$0$1</div>", $content); 
233 $fca = preg_split("/(\.|\?|\!)/", $fc, -1, PREG_SPLIT_DELIM_CAPTURE); 
235 $prStr = ''; 
237 foreach ($fca as $fck => $fcv) { 

     if ($fck % 3 == 0 && $fck != 0 && !in_array($fcv, array(".", "?", "!"))) 
      $prStr .= "</p>\n<p>"; 

      $prStr .= $fcv; 

    } 

我相信,这是因为它的吐出的内容作为一个数组?有什么特别的我需要做的数据,使其输出正确?

非常感谢,

凯文

回答

1

已经浏览过的代码,我觉得我有一些想法什么它应该做的,但我仍然感到困惑的随机数发生器的东西;-)

您可以将您的JSON数据作为字符串传递给generateContent()方法作为第一个参数($source)。

generateContent()返回一个数组,所以你将不得不通过formatContent()(我认为)运行它。

+0

Hi @Jack,我已经编辑了上面的内容,以显示我所尝试过的内容,以及如果您不介意观看,出现了什么问题。我通常不会和json一起工作,并且已经被踢出了尖叫,所以对于成为这样的新人非常抱歉! – 2012-04-24 11:30:04

+0

我不知道这些行号在代码中指向的位置。 – 2012-04-25 02:56:04

+0

对不起,我有一个金发的时刻...我编辑了这个问题,并添加了影响的行。如果你需要其他东西,请随时回到我身边。 – 2012-04-25 06:34:41