2012-08-24 92 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