2011-01-24 27 views
14

. PHP kullanıyorum, bu yüzden bazı şeyleri temizlemek istiyorum. Bireysel sorgu dize parçalarıURL/Hep URL/HTML Kodlama/Çıktısı ile karıştırılmamalıdır edilmiştir HTML Kaçan/Kodlama

$url = 'http://test.com?param1=' . urlencode('some data') . '&param2=' . urlencode('something else'); 
  • htmlentities için:

    ben her zaman

    • urlencode kullanması gerektiğini söyleyebilir böylece <> gibi özel karakterleri kaçmak için o kadar düzgün hale edilecektir tarayıcı

    Her işlevi kullanabileceğim başka yerler olur muydu? Hep konusunda haklı Bu onlar

  • cevap

    29

    Öncelikle, zamanın htmlentites civarında% 99 kullanılarak olmamalıdır: Yani sık sık benzer bir şey görürsünüz. Bunun yerine, xml/html belgeler içinde kullanmak için metni kaçmak için htmlspecialchars() kullanmalıdır. htmlentities yalnızca, kullanmakta olduğunuz yerel karakter kümesinin görüntülenemediği karakterleri görüntülemek için kullanışlıdır (sayfalarınız ASCII'de ise yararlıdır, ancak görüntülemek istediğiniz bazı UTF-8 karakterleri vardır). Bunun yerine, tüm sayfayı UTF-8 yap (zor değil) ve onunla yap.

    Bildiğim kadarıyla urlencode gibi, sen kafasına çivi çarptı.

    Yani, özetlemek gerekirse:

    • İçinde HTML:

      <b><?php echo htmlspecialchars($string, ENT_QUOTES, "UTF-8"); ?></b> 
      
    • bir url'nin İçinde:

      $url = '?foo='.urlencode('bar'); 
      
    18

    tarafından karıştı, bütün bu kaçan şeylerde iyi değilim. Her ne kadar - htmlspecialchars sürece size charsets düz olsun, gayet iyi. Hangisini yapmalısın? Bu yüzden onu kullanma eğilimindeyim, bu yüzden onu mahvedersem erken öğrenirdim. Ayrıca, bir URL'yi bir html içeriğine koyarsanız, (0 - a - etiketinin href'unda), bundan kurtulmanız gerektiğini unutmayın.

    echo "<a href='" . htmlspecialchars("?foo=".urlencode($foo)) . "'>clicky</a>" 
    
    +0

    Büyük cevabı. Bu, başka bir bağlam içinde bir bağlam için nasıl kaçılacağına dair bir örnektir. Unutmamak gerekir ki, urlencode herhangi bir soruna neden olmak için herhangi bir özel html karakterini asla çıkarmayacak olsa da, bütün html öznitelik içeriğinden kaçmak zarar vermez. – Phil

    İlgili konular