Bir dize htmlentitiesi kullanma

7 Cevap php

Ben bütün form metin giriş alanları için htmlentitiesi kullanıyor olmalıdır ama bu işe yaramazsa biliyorum:

<?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>";
?>

Bu sadece "şeklinde Htmlentities (0123456789)" olarak girdi değeri göstermektedir? Neyi yanlış lütfen yaptınız?

7 Cevap

kullanmayı deneyin

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

orada. Şu anda, senin dize sadece htmlentities dize içerir ve Sen, dize çıkmak işlevini çağırın ve yukarıdaki gibi, yerine sonucudur koymak gerekir içeri değişkeni ekliyorsa.

Bir dizenin ortasında bir işlev çağrısı olamaz. Sen işlev çağrısı dönüş değeri almak gerekir ve daha sonra dize olduğunu içerir.

Ancak ...

<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>

... Temiz olacaktır.

Düzeni için tabloları kalktı presentational biçimlendirme ve kullanım kurtulmak gibi.

Bu çalışacaktır:

<?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>";
?>

BTW, ben de size gerçekten dize içinde olmalıdır sabiti "Telefon", birleştirmek yere gibi oluyor burada bazı çok garip sözdizimi düzeltildi. Ayrıntılar bu tür önemli ve kolayca kodunuzu kıracak.

Eğer dizge içinde çift tırnak tüm kaçmak zorunda değilsiniz, böylece de, ben böyle bir dize etrafında yerine çift tek tırnak, kullanmanızı öneririz.

@ Workmad3: o PHP yapıyor gibi çalışmaz.

<?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>';

Sadece arıyorsanız yapım-your-çıktı-güvenli-in-HML; Bunu 'sadece' bir telefon numarası beri, yerine htmlspecialchars () kullanmalısınız.

htmlspecialchars($row[telephone], ENT_QUOTES);

htmlentities () biraz daha yavaş ve çokbaytlı karakterlerle kadar iyi değildir. Ama bu sorunları sadece jet için almıyorum tahmin ediyorum.

HTML ve PHP değişkenleri büyük bir bölümünü birleştirmek istiyorsanız yapabileceğiniz iki şey vardır.

Bir, bir heredoc inşaat kullanın.

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

echo $txt;

İkincisi, daha sonra Yorumlu metin kullanan bir işlevi isim birinci sınıf değişkeni kullanın.

$he = 'htmlentities';

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

echo $txt;

Bununla birlikte, HTML kötü hataların artış riski nedeniyle, çok büyük parçalar ele alınması gerekir. Ayrıca, gereksiz yere kendinizi tekrar olabilir.

Her şeyden önce, bir dize içinde HTML yankı yok. Biçimlendirme adlı ayrı bir kod.

<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>