Ben bir dizi dizeleri listesine veritabanından bir dize karşılaştırarak kulüpler:
if (in_array($entry, array('Söme string', 'other-string')))
Bu ancak değil, other-string
için çalışıyor Söme string
, bu dize içinde bir özgü ve bir html kişiliğe sahip olduğunu beeing temel fark. $entry
veritabanında Söme string
ise, karşılaştırma aynı dize olmalıdır bile, başarısız olur.
Ben de ===
ve ==
ile strcmp
ve doğrudan karşılaştırma çalıştı, ama karşılaştırma her zaman negatiftir. Ben de utf8_encode
karşılaştırmadan önce denedim, ama hiçbir şey yapmadı.
Veritabanı UTF-8 kullanıyor, ben Drupal API fonksiyonları ve benim php dosyası da UTF-8 kodlanmış kullanarak veri getirebilir. I çıkış HTML $entry
baskı ve Söme string
, bunlar ayırt edilemez.
Bu davranış neden olabilir Herhangi bir fikir ne?
Update
Yardımlarınız için teşekkürler. Bu
yolda dönüştürülür ve bir HTML varlık olarak veritabanında bir gerçek bölünemez boşluk olarak depolanır görünüyor. Yazdırmadan bir HTML varlık için geri dönüştürür (ya da belki Kundakçı bunu yapmaz ben ona baktığımda).
(Html kaynak sonuçlanan alınan yazdırma işlevini kullanarak) var_dump çıkışı ():
$entry: string(14) "Söme string"
"Söme string": string(18) "Söme string"
(Gerçek bir bir ad içeren olarak ben dize kaydetmiştiniz)
Update 2
I "Some string"
için dize değişti ettik ve burada çıkışı bulunuyor
var_dump(bin2hex($entry));
var_dump(bin2hex('Some string'));
$entry: string(24) "536f6d65c2a0737472696e67"
"Some string": string(32) "536f6d65266e6273703b737472696e67"