2012-05-14 13 views
6

ile sadece tek tırnaklar (çift tırnak işareti bırakın) Sadece tek tırnak işaretleri (such as this answer) kaçmak için başka yollar olduğunu biliyorum, ancak bana htmlspecialchars() kullanarak bir yolu olması gerektiğini bana görünür. Kılavuza göre, sabitlerinin bir kombinasyonu olmalı, ancak açıklamalarına dayanarak, onu göremiyorum.htmlspecialchars()

Sadece tek tırnaklardan kaçmak, çift tırnakları tek başına bırakmak htmlspecialchars()? çift ​​tırnak vardır

+4

Neden buna ihtiyacınız var? Benim için bir problem gibi görünüyor. – Halcyon

+1

sadece tek tırnaklarsa, o zaman str_replace –

+0

[This] kullanın (http://www.php.net/manual/en/function.htmlspecialchars.php#99185) yardımcı olabilir –

cevap

9
str_replace("'", "\\'", $string); 

üzerinde

+1

Hedefin bir HTML belgesine yerleştirilmesi gerekiyorsa, \ ''hedeflenen değiştirme dizesi olduğundan şüphe ediyorum. – hvd

+0

Tek tırnaklardan kaçmaya çalışıyorsa, bu amaçlanan dizgedir. – Norse

+1

Tek bir tırnak içine koymak için tek tırnaklardan kaçmak, "" (veya eşdeğeri, eşdeğer ise - emin değilim) anlamına gelir.Diğer öneriniz, 'ENT_QUOTES', çift tırnak karakterlerini de dönüştürür, ki bu soru yalnız bırakmayı ister. – hvd

1

Kullanım htmlspecialchars (...)

Sonra str_replace (...).

Veya, ENT_QUOTES

htmlspecialchars($string, ENT_QUOTES); 
9

İşte aradığınız sabitler kombinasyonu kullanın.

$escaped_string = htmlspecialchars($string, ENT_QUOTES & ~ENT_COMPAT, $encoding); 

Bu

& ' < > kaçış, ama tek başına " bırakır olacaktır. ENT_QUOTES & ~ENT_COMPAT, " iki tırnak işareti, çift tırnak eki" anlamına gelen bir bit işleme dilidir.

Bu sabitlerin nasıl tanımlandığından dolayı çalışır. php-src/ext/standard/html.h

#define ENT_HTML_QUOTE_NONE   0 
#define ENT_HTML_QUOTE_SINGLE  1 
#define ENT_HTML_QUOTE_DOUBLE  2 

#define ENT_COMPAT  ENT_HTML_QUOTE_DOUBLE 
#define ENT_QUOTES  (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE) 
#define ENT_NOQUOTES ENT_HTML_QUOTE_NONE 

Neden hiç tek tırnak kaçmak isteyeyim, ancak çift tırnak? Eh, çift tırnak, ama tek tırnaklar kaçış neden tersi: çünkü bir sürü var " çift tırnak ve sadece bir kaç ' tek tırnak, bir sopa var gibi ' -delimited string.

Bir örnek:

<div data-myobject='<?= htmlspecialchars(json_encode($myobject), ENT_QUOTES & ~ENT_COMPAT, 'UTF-8') ?>' 

json_encode() çift tırnak sürü oluşturur, bu nedenle tek tırnak ayrılmış özelliğinde sonucu sopa ve çift tırnak çıkışsız bırakmak mantıklı.

+0

Bunun eski ve kapalı bir soru olduğunu biliyorum, ancak orijinal soruya herhangi bir yerde bir cevap bulamadım, bu yüzden bir tane yayınlamaya karar verdim. – Grilse

+0

Yanıt bu olmalı. Ben tercih ederim ENT_HTML5 | ENT_QUOTES ve ~ ENT_COMPAT ’kendim. – Isius

İlgili konular