2016-04-12 13 views
-2

ここでは$countrydocument.write()関数を使用して "India"のような文字列を割り当てています。 "India"という文字列も表示されます。しかし、strcmpにしようとすると-1を返し、IF文中に "False"を返します。なぜIF文とstrcmpが常にFALSEを返すのですか? -

<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がクライアントサイド言語であることを知っています。

他の方法と比較することはできますか? ありがとう!

+3

'「『は、 '' STRING'であり、それは '』インド」 ' – Rayon

+0

に等しいではありませんが、私はエコーだとき、それは『インド』を返します。 –

+3

ブラウザで実行中のスクリプトをエコーし​​ています... 'document.write'は、文書のストリームにテキストの文字列を書き込みます – Rayon

答えて

1

文字列"India"と文字列"<script>document.write('India');</script>"を比較しています。これらの2つの文字列はどこにも同じではないことが視覚的に分かります。

trueを返す1つの方法は、その長いスクリプト文字列に文字列 "India"が含まれているかどうかをチェックすることです。これは、それがあなたがやっていることを達成するための最良の方法だと言っているわけではありません。方法:

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

もう一つの方法は、変数$の国から"<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()にする必要があるのか​​分かりませんが?

+0

私の編集した質問を参照してください。 –

+0

JavaScriptがJavaScriptの前に実行されています。 JavaScriptからPHPに変数を渡す方法が必要な場合は、PHPスクリプトにAJAXクエリを送信するか、JavaScriptを使用して値をHTMLフォームに入力してフォームを送信する必要があります。 PHPは$ _POST配列からデータにアクセスできます。 – kiradotee

+0

これはとても便利な方法です。ありがとう! –

関連する問題