为什么IF语句和strcmp总是返回FALSE - PHP

时间:2016-04-12 12:45:56

标签: javascript php

在这里,我分配了像" India"使用$country函数转换为document.write()变量。 它还会打印字符串" India"。但是当我尝试-1并返回" False"时,它会返回strcmp在IF声明中。

  <script language="Javascript"> 
    var country_var = geoplugin_countryName();  //India
  </script>

<?php
echo $country = "<script>document.write(country_var);</script>"; //Return : India

echo strcmp($country,"India"); //Return : -1

if(trim($country) == 'India')
    echo "<br>True";   
else   
    echo "<br>False";      
?>

我知道PHP是服务器端,JS是客户端语言。

是否可以比较任何其他方式? 谢谢!

1 个答案:

答案 0 :(得分:1)

您正在将字符串"India"与字符串"<script>document.write('India');</script>"进行比较。您可以直观地看到这两个字符串无处相同或相同。

返回true的一种方法是检查那个long-script-string是否包含字符串&#34; India&#34;,并不是说这是实现你正在做的事情的最好方法,而且它可能是一种错误的方式,但仍然是一种方式:

if (strpos($country, 'India') !== false) {
    echo 'The country string has India in it';
}

另一种方法是从变量$ country中删除"<script>document.write('""');</script>",然后再进行比较。 您可以使用str_replace()preg_replace()

执行此操作

在任何情况下,您都应该先将一个干净的变量与一个字符串进行比较,然后再将该变量包装在<script>标记中,这样:

<?php
    echo $country = "India"; //Return : India

    echo strcmp($country, "India");

    if($country === "India")
        echo "<br>True";   
    else   
        echo "<br>False";      

    $country = "<script>document.write('" . $country . "');</script>";
?>

P.S。虽然我不明白为什么你甚至需要把国家名称放在document.write()