(http_build_query tek-tırnak tutma)?

3 Cevap

Ben etiket özelliklerini html için bir dizi değiştirmek için http_build_query kullanmak isteyen kulüpler. Sorun o %27 içine benim tek tırnaklı değerlerini değişen vardır. Yani varsa

http_build_query( array("type"=>"'hidden'", ... ), '', ' ' );

Ben olsun

<input type=%27hidden%27 ...>

How can Ben olsun around this?

3 Cevap

Eğer urldecode () http_build_query önünde ekleyebilirsiniz

gibi:

<?php
     urldecode(http_build_query( array("type"=>"'hidden'", ... ), '', ' ' ));
?>

http_build_query() bir URL'ye parametreleri bir dizi çevirmek için tasarlanmıştır. Bir HTML etiketi oluşturmak için değil. Bir kaç şey yapabilirsiniz:

  1. Elle Tümünü ekle

    <input type="<?php echo htmlspecialchars($array['type']); ?>" ...
    
  2. Bir yardımcı işlev oluşturmak

    function buildArgs($array) {
        $ret = '';
        foreach ($array as $key => $value) {
            $ret .= ' ' . htmlspecialchars($key, ENT_QUOTES) . '="' . htmlspecialchars($value) . '"';
        }
        return trim($ret);
    }
    
    
    <input <?php echo buildArgs(array('type'=>'hidden', 'name'=>'foo')); ?>>
    

Seni doğuracak:

    <input type="hidden" name="foo" >

Ben sonucu bir rawurldecode() yapıyor bu çevrede alabilir sanırım, ama bu gerçekten http_build_query yönelik ne değildir. Ve bir input elemanı olarak çıktı kullanılmaz hale zaten ad / değer çiftleri arasında bir & koymak değil mi?

Bunu yapmak için XML sınıflarının birini kullanabilirsiniz ama bu çabaya değer emin değilim. Nerede bu kullanıyorsunuz?