Nasıl PHP bir dize bir örneğini kaldırmak için?

5 Cevap

Ben otomatik olarak ekler ben yapıyorum cm üzerinde bir açık kaynak editörü var bir

<br />

tag yazının başında bu veritabanına gönderir. Bu, doğrulama bir ağrı yapar sunulmadan gerçek bir metin bile olsa, çünkü form hala girişi olarak mola etiketi kabul eder ve engeller gösterilmesini hata "bazı metin giriniz".

Yani benim gibi bu giriş süzme tarafından açılış mola etiketi kaldırmak için çalıştı:

substr($_POST['content'], 6);

Kullanıcı BACKSPACE yazının ilk 8 karakter bir break etiketi olmasa bile kaldırılmış olur bu durumda mola etiketi kaldırır birkaç kez basın yok gibi bu sürece çalışır.

Peki nasıl bu ilk 6 karakter sonu etiketi oluşan SADECE girdi ilk 6 karakterleri silebilirsiniz. Ayrıca ben bütün mola etiketleri, yazının başında sadece birini kaldırmak istemiyorum.

5 Cevap

Ölçülebilir ve ayrıntılı:

if (substr($_POST['content'], 0, 6) == '<br />') {
    $_POST['content'] = substr($_POST['content'], 6);
}

Yani ayrıntılı, ama biraz yavaş değil:

$_POST['content'] = preg_replace('#^<br />#', '', $_POST['content']);

Açık kaynak editörü için bir çözüm oluşturma aradığınız gereken çözüm değildir. O <br /> orada sadece tüm bu konuda endişelenmenize gerek yok böylece eklemek değil bu yüzden sadece editörü düzeltmek için akıllıca olmaz mıydı?

Siz örneğin kullanabilirsiniz. preg_replace:

$text = preg_replace('#^<br />#', '', $text);

Eğer İfadelerinin kullanmak istemiyorsanız, size çıkarmadan önce substr ile kontrol edebilir:

if (substr($text, 0, 6) == '<br />')
    $text = substr($text, 6);

Burada kullanıcı aslında bir şey girmiş olup olmadığını test daha iyi bir çözüm olarak düşünmek ne:

if (!strlen(trim(strip_tags($_POST['content'])))) {
    // no content
}
else {
    // some content
}

Giriş HTML etiketleri başka bir şey varsa, bu temelde sınar.

Önce bir br varsa ltrim, ardından sınamak ile başında boşluk çıkarın. Br varsa çıkarın ve br sonra boşlukları kaldırmak için başka bir ltrim yapmak.

$str = ltrim($_POST['content']);
if (substr($str, 0, 6) == '<br />'){
   $str = ltrim(substr($str, 6)); 
}

if ($str){
    //some content
} else {
    //no content
}

Bu şekilde br önce ve sonra boşluk ve yeni satırları görmezden.