1

すべてのフォーム テキスト入力フィールドに htmlentities を使用する必要があることはわかっていますが、これは機能しません。

<?php
echo "<tr>
        <td align=\"right\">".Telephone." :</td>    
        <td><input type=\"text\" name=\"telephone\" size=\"27\"
            value=\"htmlentities($row[telephone])\"> Inc. dialing codes
        </td>    
</tr>";
?>

入力値をフォームに「htmlentities(0123456789)」として表示するだけですか? 私は何を間違えましたか?

4

7 に答える 7

5

使ってみて

value=\"" . htmlentities($row[telephone]) . "\"

そこの。現在、文字列には単に htmlentities 文字列が含まれており、変数がスプライスされています。上記のように、文字列を取り出して関数を呼び出し、その結果を所定の位置に配置する必要があります。

于 2008-10-16T16:08:14.033 に答える
3

文字列の途中で関数を呼び出すことはできません。関数呼び出しから戻り値を取得し、それを文字列に含める必要があります。

でも...

<tr>
    <td align="right">
        <label for="telephone">Telephone:</label>
    </td>    
    <td>
        <input type="text" 
               name="telephone" 
               id="telephone"
               size="27" 
               value="<?php 
                   echo htmlentities($row[telephone]); 
               ?>"> 
        Inc. dialing codes 
    </td>
</tr>

...よりきれいになります。

非推奨のプレゼンテーション マークアップを取り除き、レイアウトにテーブルを使用する場合と同様です。

于 2008-10-16T16:08:37.650 に答える
1

HTML 変数と PHP 変数の大部分を結合したい場合、できることは 2 つあります。

1 つ目は、HEREDOC 構造を使用することです。

$txt = <<<HERETEXT
Put your HTML here.
HERETEXT;

echo $txt;

次に、ファースト クラス変数を使用して関数に名前を付け、それを HEREDOC で使用します。

$he = 'htmlentities';

$txt = <<<HERETEXT
{$he($string, ENT_QUOTES, 'UTF-8')}
HERETEXT;

echo $txt;

ただし、厄介なエラーのリスクが高まるため、HTML を非常に大きなチャンクで処理しないでください。また、不必要に繰り返すこともあります。

于 2012-09-30T02:39:19.857 に答える
1

@workmad3: 彼は PHP をやっているので、それはうまくいきません。

<?php echo '<tr>
                <td align="right">' . Telephone . ' :</td>    
                <td><input type="text" name="telephone" size="27" value="' . htmlentities($row[telephone]) . '" /> Inc. dialing codes</td>    
        </tr>';
于 2008-10-16T16:10:31.033 に答える
1

これはうまくいきます:

<?php
echo "    <tr>
                    <td align=\"right\">Telephone :</td>    
                    <td><input type=\"text\" name=\"telephone\" size=\"27\" value=\"".htmlentities($row[telephone])."\"> Inc. dialing codes</td>    
            </tr>";
?>

ところで、文字列内にあるはずの定数「Telephone」を連結する場所など、ここで行っている非常に奇妙な構文も修正しました。この種の詳細は重要であり、コードを簡単に壊してしまいます。

また、文字列内のすべての二重引用符をエスケープする必要がないように、このような文字列を二重引用符ではなく単一引用符で囲むことをお勧めします。

于 2008-10-16T16:15:25.423 に答える
1

Making-your-output-safe-in-hml を探しているだけの場合。代わりに htmlspecialchars() を使用する必要があります。これは「唯一の」電話番号だからです。

htmlspecialchars($row[telephone], ENT_QUOTES);

htmlentities() は少し遅く、マルチバイト文字には適していません。しかし、ジェットだけでこれらの問題に対処しているとは思いません。

于 2008-10-16T20:03:20.237 に答える
0

まず第一に、HTML を文字列でエコーしないでください。コードをマークアップから分離します。

<tr>
    <td align="right">Telephone :</td>
    <td><input type="text" name="telephone" size="27"
        value="<?php echo htmlentities($row['telephone']); ?>"> Inc. dialing codes</td>
</tr>
于 2008-10-16T16:09:32.627 に答える