HTML PHP ile çıktı niteliklerini çift tırnak Escape

5 Cevap php

PHP yazarken sık sık bu gibi bazı HTML bu çıkışı olacak -

echo "<a href="../" title="link title">".$link_text."</a>";

Ben <a> elemanın nitelikleri de çift tırnak kaçmak gerekir gibi Açıkçası bu ayrıştırmak değildir. Oldukça hızlı bir şekilde beni elle ters eğik çizgi ekleyerek daha bu yapacağını bir regex var mı?

Bir başka şey - regex Ben $link_text değişkeni eklenmiş ettik (örneğin etiketinin dışında çift tırnak kaçmak gerekir.

Herhangi bir fikir?

5 Cevap

Sadece yerine tek tırnak kullanmanız gerekir:

echo '<a href="../" title="link title">' . $link_text . '</a>';

Ben (kaçış olmadan değil) ile gelebilir Çözümleri:

  • Tek tırnak

    echo '<a href="../">' . $link_text. '</a>';
    
  • Çift tırnak kullanın

    echo "<a href='../'>$link_text</a>";
    
  • Sprintf

    echo sprintf('<a href="../">%s</a>', $link_text);
    
  • Yorumlu metinler kullanın

    echo <<<EOF
    <a href="../">$link_text</a>
    EOF;
    
  • smarty gibi şablon motoru kullanın

  • Exit PHP-mode:

    ?><a href="../"><?php echo $link_text ?></a><?php // other code...
    

BTW, htmlspecialchars() $link_text değişkeni kullanmak için, ya da bir XSS güvenlik delik olacak emin olun.

Kullan (Bu sözdizimi tırnak vb hakkında endişelenmeyin)

echo <<<EOT
<a href="../" title="link title">$link_text</a>
EOT;

Ben kuvvetle çiftleşmiş kullanarak yerine dizeleri oluşturmak için çalışıyoruz öneririm.

Çiğ PHP:

<a href="../" title="link title"><?php echo $link_text; ?></a>

tek tırnak kullanın ya heredoc. Ben son tercih ederim.