Ben HTML comments Li ve P etiketlerine sarılmış var: (

3 Cevap php

İlk htmlentities ve stripslashes nl2br, ardından bir içeriğe sahiptir.

Bu sonunda bir filigran olarak biter şu anlama gelir:

<li><p><!-- watermark --></p></li>

Çok kullanışlı değil. Ben denemek ve şerit html yorum ve görüntüleme ama onun çok iyi değil durdurmak için aşağıdaki kodu var!

$methodfinal = str_replace('<li><p><!--', '<!--', $method);
$methodfinal2 = str_replace('--></p></li>', '-->', $methodfinal);
echo $methodfinal2;

Herkes herhangi bir fikir var mı?

3 Cevap

EDIT: following Zed's and your comments I've done some testing and this is what you should use:

$final = preg_replace('/<li><p>[\s]*?&lt\;!--(.*?)--&gt\;<\/p><\/li>/m', "<!--$1-->", $z);

İşte RE bir dökümünü:

<li><p>

Bu açıktır

[\s]*?

Eğer birkaç boşluk ve <li> ile açıklama arasında bir yeni satır var, ama biz * olmayan açgözlü kullanmak yüzden satırsonlarının en az sayısını istiyorum çünkü? (O da * ile çalışmak Semester)

&lt\;

kaçmak gerekir;

!--(.*?)--

yine biz * kullanabilir? bu yüzden (diğer akıllıca sadece bu satırı maç olur Eğer son birine ilk birinden yine o bozkır maç aynı hat olsaydı

&gt\;<\/p><\/li>

Yukarıdaki gibi aynı

/m'

yani php (ben bu konuda emin değilim ama çalışıyor görünüyor) boşluk olarak satır başı karakterlerine tedavi olur

Bu böyle bir şey?

$final = preg_replace("/<li><p>(<!--.*-->)<\/p><\/li>/", "$1", $original);

@ Zed:

Daha sevecen olalım:

$final = preg_replace("/<li><p>(<!--.*?-->)<\/p><\/li>/", "$1", $original);
# use .*? every time over .* unless you specificly want what it does
# .*? matches as less as it can
# .* matches as much as it can

daha iyi:

$final = preg_replace("/<li><p>(<!--[^\-\>]+-->)<\/p><\/li>/", "$1", $original);
# [^\-\>]+ will look for any character that is not - or > 
# so will perform faster

Sadece daha iyi regex uygulama savunmaya çalışıyor. Umarım bu yardımcı olur.