PHP ile içerik sterilize etmek için en iyi yolu?

4 Cevap php

Içerik "sterilize" için en iyi yolu hangisidir? Bir örnek ...

Example - Before sanitize:

Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.
Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.

Example - After sanitize:

<p>Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p>

<p>Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p>

What it should do

  • Bu p-etiketleri yerine gibi satır sonu eklemek gerekir.
  • Bu üçlü alanlar gibi boş alan kaldırmak gerekir
  • Bu çift hat sonları kaldırmanız gerekir.
  • Bu sekmeleri kaldırmak gerekir.
  • Bu içerik varsa önce satır sonları ve boşluk kaldırmak gerekir.
  • Bu içerik varsa sonra satır sonları ve boşluk kaldırmak gerekir.

Sağ Ben str_replace işlevini kullanmak ve bunun için daha iyi bir çözüm olması gerektiğini biliyor musunuz?

I want the function to look like this:

function sanitize($content)
{
    // Do the magic!
    return $content;
}

4 Cevap

  • Bu p-etiketleri yerine gibi satır sonu eklemek gerekir.

Sizin ihtiyaçlarınıza uygun Tekstil tercüman ya Markdown, ya da herhangi başka bir humane markup language gibi bir şey ile çalıştırın.

  • Bu üçlü alanlar gibi boş alan kaldırmak gerekir
  • Bu çift hat sonları kaldırmanız gerekir.
  • Bu sekmeleri kaldırmak gerekir.
  • Bu içerik varsa önce satır sonları ve boşluk kaldırmak gerekir.
  • Bu içerik varsa sonra satır sonları ve boşluk kaldırmak gerekir.

Neden rahatsız? HTML belgesi olarak işlenir, birden fazla beyaz boşluk karakterleri yok, tek bir alana indirgenir? Problemlerin çoğunu kendileri çözmek.

function sanitize($content) {
  // leading white space
  $content = preg_replace('!^\s+!m', '', $content);

  // trailing white space
  $content = preg_replace('![ \t]+$!m', '', $content);

  // tabs and multiple white space
  $content = preg_replace('![ \t]+!', ' ', $content);  

  // multiple newlines
  $content = preg_replace('![\r\n]+!', "\n", $content);

  // paragraphs
  $content = preg_replace('!(.+)!m', '<p>$1</p>', $content);

  // done
  return $content;
}

Örnek:

$s = <<<END
Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.
Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.
END;

$out = sanitize($s);

Çıktı:

<p>Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p> 
<p>Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p>

CakePHP ve Sanitize sınıfına bir göz atın.

Düzenli!

Orada Zend üzerinde oldukça eski bir makale, ama onlar vermek örneğe bakın:

http://devzone.zend.com/article/761