문제

첫 번째 콘텐츠가 있습니다 htmlentities 그리고 stripslashes 그 뒤에 nl2br.

이것은 끝의 워터 마크가 다음과 같이 끝납니다.

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

그다지 유용하지 않습니다. 아래 코드가있어 HTML 주석을 제거하고 표시하지 않고 표시를 중지하지만 그다지 좋지 않습니다!

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

누구든지 아이디어가 있습니까?

도움이 되었습니까?

해결책

편집 : Zed와 귀하의 의견에 따라 테스트를 수행했는데 이것이 사용해야합니다.

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

다음은 Re의 고장입니다.

<li><p>

이것은 분명합니다

[\s]*?

당신은 몇 개의 공간과 새로운 <li> 그리고 의견은, 그러나 우리는 가장 적은 수의 신생을 원합니다. ( *도 함께 일할 수 있습니다)

&lt\;

탈출해야합니다.

!--(.*?)--

다시 우리는 *? 그래서 우리는이 라인 만 일치 할 것입니다 (다른 현명한 라인이 다시 같은 줄을 가지고 있다면 첫 번째에서 마지막으로 일치합니다.

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

같은 상기와

/m'

따라서 PHP는 Newlines를 공백으로 취급 할 것입니다 (나는 이것에 대해 잘 모르겠지만 작동하는 것 같습니다).

다른 팁

이 같은?

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

@제드 자의 명칭:

더 배려 할 수 있습니다.

$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

더 나은 :

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

더 나은 동선 연습을 옹호하려고합니다. 도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top