2012-08-24 127 views
0

我試圖設置一個條件系統,它以編程方式檢測瀏覽器(使用USER_AGENT字符串)和平臺(使用PHP-Mobile-Detect)。我目前的設置是大致是這樣的:無法正確回顯代碼與PHP

<DOCTYPE html> 
<html> 
<head> 
<?php 
include("Mobile_Detect.php"); 
$detect = new Mobile_Detect(); 
?> 
    <?php if($detect->isiPad()) { 
     echo '<link rel="stylesheet" href="/style/iPad.css" type="text/css">'; 
    } 

    else 
    { 
     echo '<meta charset="UTF-8"> 
     <link rel="stylesheet" href="/style.css" type="text/css">; 
     if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false) 
      { 
       echo '<link rel="stylesheet" href="../style/splash-webkit.css" type="text/css">'; 
      } 
     //and so on for other browsers 
     [etc]' 
    } 

出現在這裏最明顯的問題,就是' S之間的衝突。根據我的意願,在else之下的echo而不是在我的<style>標記的末尾結束,而在第一個'結束時出現在代碼中,該代碼原來在第一個USER_AGENT聲明中。 我怎樣才能繞過這個問題?

<link rel="stylesheet" href="/style.css" type="text/css">; 

將其替換爲:

<link rel="stylesheet" href="/style.css" type="text/css">'; 

使用的是單引號和雙引號很好,雖然

回答

5

你在這行的最後錯過了'。不過,如果你做的需要使用相同的引號,你總是可以用\轉義它們。例如,這也將工作:

echo '<meta charset=\'UTF-8\'>'; 
+0

反斜線招工作就像一個魅力。謝謝! – Jules

2

試試這個,讓我知道,然後

else 
{ 
echo '<meta charset="UTF-8"><link rel="stylesheet" href="/style.css" type="text/css">'; 
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false) 
{ 
echo '<link rel="stylesheet" href="../style/splash-webkit.css" type="text/css">'; 
} 
//and so on for other browser 
} 
+0

你的方法工作得很好,但考慮到我已經有幾個頁面使用這種類型的代碼(我正在考慮包括在這一點上),Fluffeh的解決方案更容易。 – Jules