Php 我将HTML注释包装在Li和P标记中:(
我的内容首先是Php 我将HTML注释包装在Li和P标记中:(,php,html,regex,preg-replace,Php,Html,Regex,Preg Replace,我的内容首先是htmlentities,然后是stripslashes,然后是nl2br 这意味着结尾处的水印最终为: <li><p><!-- watermark --></p></li> 不是很有用。我有下面的代码来尝试剥离html注释并停止它的显示,但它不是很好 $methodfinal = str_replace('<li><p><!--', '<!--', $method); $meth
htmlentities
,然后是stripslashes
,然后是nl2br
这意味着结尾处的水印最终为:
<li><p><!-- watermark --></p></li>
不是很有用。我有下面的代码来尝试剥离html注释并停止它的显示,但它不是很好
$methodfinal = str_replace('<li><p><!--', '<!--', $method);
$methodfinal2 = str_replace('--></p></li>', '-->', $methodfinal);
echo $methodfinal2;
$methodfinal=str_replace(“”、“-->”、$methodfinal);
echo$methodfinal2;
有人有什么想法吗?像这样的想法吗
$final = preg_replace("/<li><p>(<!--.*-->)<\/p><\/li>/", "$1", $original);
$final=preg_replace(“/()/”、“$1”、$original);
编辑:
以下是Zed和您的评论,我已经做了一些测试,这是您应该使用的:
$final = preg_replace('/<li><p>[\s]*?<\;!--(.*?)-->\;<\/p><\/li>/m', "<!--$1-->", $z);
因为在
和注释之间有一些空格和换行符,但我们希望换行符的数量最少,所以我们使用非贪婪*?(它也可以与*一起使用)
需要逃避现实
!--(.*?)--
同样,我们使用*?所以我们只匹配这一行(另一方面,如果您再次使用同一行,它将从第一行匹配到最后一行)
>\;<\/p><\/li>
因此php会将换行符视为空白(我不确定这一点,但它似乎起作用了)@Zed:
让我们更加关心:
$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(“/()/”、“$1”、$original);
#每次都使用。*?除非您特别想要它的功能
#*?尽可能少地匹配
#尽可能多地匹配。*
更好的是:
$final = preg_replace("/<li><p>(<!--[^\-\>]+-->)<\/p><\/li>/", "$1", $original);
# [^\-\>]+ will look for any character that is not - or >
# so will perform faster
$final=preg_replace(“/()/”、“$1”、$original);
#[^\-\>]+将查找任何不是-或>
#因此,他们的表现会更快
只是想提倡更好的正则表达式实践。希望这能有所帮助。你能说明你期望的输出是什么吗?他想从输出中消除空[li][p],我猜$methodfinal2会回应
>\;<\/p><\/li>
/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
$final = preg_replace("/<li><p>(<!--[^\-\>]+-->)<\/p><\/li>/", "$1", $original);
# [^\-\>]+ will look for any character that is not - or >
# so will perform faster