PHP dizge karşılaştırma garabeti

0 Cevap php

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"

0 Cevap