2012-02-27 11 views
4

基本的に私はページにエコーしたいhtmlのブロックがあり、htmlには$記号があり、phpは変数だと考えるので、$ 1は変数として扱われません値は表示されません。

あり、ここでの標準的な答えはあるが、どれも機能していない:PHP: How to get $ to print using echo

私の次のアイデアは$で文字列を分割し、各部分をエコーすることです。

私はエコーとプリントを試したコードです。

foreach ($rows as $rowmk) { 
    $s = $rowmk->longdescription; 
    //$s = str_replace('$', '@', $s); 
    $s = str_replace('$', '\$', $s); 
    //echo "$s" . "<br>"; 
    print $s; 
} 

OK私はとにかくそれを投稿する必要があり考え出し$

foreach ($rows as $rowmk) { 
    $s = $rowmk->longdescription;  
    $s = str_replace('$', '&#36;', $s); 
    echo $s . "<br>"; 
} 

の文字コード値を使用することで解決。

おかげで、

マット

+3

あなたの質問と回答は理にかなっていません。 '$ dollar = '$'; echo $ dollar; 'はうまくいくでしょう。 – Matthew

+0

あなたのhtmlにドル記号が入っていて、その文字列をエコーし​​ようとすると、$記号が変数接頭辞であるとPHPは仮定しません。だから、私はあなたの最初のコードブロックに別の問題があると思います。テンプレートでeval()を使用していないのですか? – halfer

+0

@Matthewではなく '$ dollar =" $ "; echo $ dollar; 'は動作しません! –

答えて

1

あなたは間違った場所でそれをやっています。あなたのケースで$rowmk->longdescription内に格納されたリテラルの二重引用符で囲まれた文字列が(daclaredされたときに、変数補間は、それが行われています後は、あなたが本当にあなたの$の背中を取得するために何もすることができません。実行されます。

ソリューション、適切なエスケープ処理を行い、ときあなたは、文字列を宣言

+0

ありがとうございます。私は知らなかった... –

11

それとも、単一引用符を使用して文字列リテラルをエコー可能性が...

<?php 

echo 'Give me $1'; 

?> 

が印刷されます:

は私に$ 1

PHPの文字列を与えますドキュメント:

http://php.net/manual/en/language.types.string.php

サイドノート - あなたが提供するリンクには、完全に機能する多くの回答があります。あなたはどのように機能しない方法でそれらを適用していますか?

+0

これは彼の問題に本当に答えるものではありません。彼はすでに一重引用符を使用しています。彼は私たちに見せない何か他のことをしているにちがいない。 – Matthew

+0

彼が一重引用符を使用しているのを私は見ていませんが、あなたの意見が分かります。彼は$ dbからエコーしているので、生の状態で出力を完全に制御することができない可能性があります。そのために彼は私たちのソリューションを示しています。入力時にデータをエンコードするほうがずっと簡単ですが、すべての読み込みでデータをエンコードするのは簡単です。それでも、dbからのエコーは$を評価するべきではありません。それがどんなに致命的であるか想像してみてください。 –

+0

私のlongdescriptionフィールドはhtmlです。その中にドルの値が入ったテーブルがあります。例:​​$ 5です。 $ 5は変数として解釈されていました。 '$ s'をエコーすると$ sが出力され、テーブルは出力されませんでした。 –

4

ただ引用符付きの文字列を使用してください。

$foo = 'Hello'; 
echo '$foo'; // $foo 
echo "$foo"; // Hello 
0

私はあなたがデータベースから行を読み取ると仮定し、これらの文字列内のドルサインは、PHPによって補間されることはありませんここで少しテストスクリプトは、それを試してみることです:。。。

// you'd first have to set the three variables according to your database 
    $dbh = new PDO($DSN, $DB_USER, $DB_PASS); 

    // create a table and insert a string containing a dollar sign 
    $dbh->exec('CREATE TABLE IF NOT EXISTS some_text (longdescription VARCHAR(255))'); 
    $dbh->exec('INSERT INTO some_text (longdescription) VALUES ("10 $")'); 

    // query all the data from the table 
    $query =$dbh->query("SELECT * FROM some_text"); 
    $rows = $query->fetchAll(PDO::FETCH_CLASS); 

    // loop over all the rows (as in your example) and output the rows 
    // no problem at all 
    foreach ($rows as $rowmk) { 
    $s = $rowmk->longdescription; 
    echo $s . "<br>"; 
    } 
+0

こんにちはbjelli、悲しいことに、彼らは変数として解釈されていた。 –

-1

私はなかったですこれを使用しています

echo "$" . "VariableName"; 
関連する問題