render önce html istenmeyen öğeleri filtrelemek için en iyi yolu

6 Cevap php

Ben ekrana / echo işlemek gerekir html içeriğe sahip bir değişken $ örnek var. Ama ekrana render önce, ben bazı unsurları kaldırmak istiyorum. Örneğin $ örnek değişkeninin yapısı aşağıdaki gibidir:

<form> some stuff here... </form><p>hi there</p><div></div>

Ben render önce $ örnek değişkeni form öğesini kaldırmak istiyorum. Ben düzenli ifadeler kullanarak bunu biliyorum, ama php bunu yapmak için daha iyi bir yolu nedir? Ayrıca, tam olarak şerit gerekiyor etiketi geçirilen strip_tags gibi php bir fonksiyonu var mı? Benim soru güvensiz etiketleri soyma veya html temizleme ile ilgili değildir, bu i çıktısını almadan bir değişken certains öğeleri kaldırmak istediğinizi sadece budur. Bir generatlization olarak, nasıl ben belirli bir sınıf bunlara eklediğiniz $ örnek değişkeni yalnızca divs kaldırırım?

6 Cevap

HTML gizleyin için PHP kullanmak, ancak bunun yerine düzenini değiştirmek için bir baskı stil kullanmayın.

http://www.webcredible.co.uk/user-friendly-resources/css/print-stylesheet.shtml

Edit after your clarification:
I still think stylesheets are the way to go to hide content. If you're not stripping tags for security purposes, then I don't really know what you're trying to achieve exactly by stripping content server-side.

Sen geçmek strip_tags a list of allowed tag names with the second parameter $allowable_tags yapabilirsiniz:

// strip any tag except P and DIV
$clean = strip_tags($str, '<p><div>');

Eğer bir daha ayarlanabilir filtreleme yapmak istiyorsanız, ben DOMDocument, DOM ağacını çapraz ve ben istemiyorum düğümleri kaldırmak gibi bir HTML ayrıştırıcı kullanmak istiyorum.

Yazdırma css ekran css niteliğini kullanın:

Lütfen print.css dosyasına html balise:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />

Sizin form açıklaması:

<form class="pouet">
    ...
</form>

Sizin print.css dosyası

.pouet {
    display:none;
}

Eğer XHTML kullanıyorsanız, size kullanım için (DOM uzantısı veya SimpleXML gibi) XML araçlarını kullanabilirsiniz.

preg_replace($regex, "", $example);

Ben regex çok iyi değilim, ama $ regex böylece her şeyi içerdiği kaldırarak, bir joker tarafından takip form açık etiketini içeren ve daha sonra yakın etiketi oluşturacaktır

Edit: $ regex = "/<form.*\/form>/s";

Sen <form> ve </form> etiketleri ile acı bölmek patlayabilir () kullanın ve sadece istediğiniz parçalarını içerebilir:

$arr1 = explode("<form>",$example);
$example = $arr1[0];
for ($i=1;$i<count($arr1);$i++)
{
    $arr2 = explode("</form>",$arr1[$i]);
    $example .= $arr2[1];
}