Javascript String Uzunluğu PHP strlen Farkı

3 Cevap php

Ben javascript ile dize uzunluğunu almak için document.getElementById("text").value.length kullanın ve mb_strlen($_POST['text']) PHP ile dize uzunluğunu almak ve hem de çok farklıdır. Satırbaşları dize uzunluğunu almadan önce javascript dönüştürülür, ancak bazı karakterler sayıldığını değil sanırım.

Örneğin,

[B] 15. Umieszczanie obrazka z logo Stronie zespołu na [/ b]

Metnin bu blok PHP javascript 57 ve 58 hesaplanır. Metin uzun aldığında, fark artar. Bunu aşmak için herhangi bir yolu var mı?

3 Cevap

PHP bir UTF-8 kodlanmış dize uzunluğunu almak için çalışıyoruz, bunu gibi, mb_strlen ikinci parametre kodlaması belirtmek gerekir:

mb_strlen($_POST['text'], 'UTF-8')

Ayrıca, POST-var üzerinde stripslashes aramak için unutma.

Ben orada bir standart olmayan bir karakter (L) olduğunu fark - Ben PHP standart dışı sayar nasıl emin değilim - ama bu ikisi kadar sayma olabilir. O karakteri olmadan testi çalıştırmak ne olur?

Ben Javascript için bir strlen eşdeğer bir fonksiyonu bulduk, belki bu bir başkası için yararlı olabilir:

function mb_strlen(str) {
    var len = 0;
    for(var i = 0; i < str.length; i++) {
        len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? 2 : 1;
    }
    return len;
}

Yardım etmeye çalıştı herkese teşekkürler!