我在preg_replace
为
$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1);
如何将已删除的子字符串保存为新字符串:
$deleted = '<p>...</p>';
答案 0 :(得分:1)
如何使用preg_replace_callback
将匹配传递给用户定义的函数。
$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1);
$m
匹配数组的任何变量名称,其中索引0
是完整模式匹配use
(&$p)
用于存储匹配项的任何变量名称(通过引用传递)。答案 1 :(得分:0)
获取您可以使用的子字符串preg_match():
preg_match('#<p>(.*?)</p>#i', $html, $matches);
只需检查它包含您需要的$ matches变量。
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本, $ matches 1将包含与第一个捕获的匹配的文本 带括号的子模式,依此类推。
之后使用preg_replace
删除<p>
代码。
但是,如果您只想删除<p>
标记并保持子串只是preg_replace
,请执行以下操作:
$html = "left <p>substring</p> right";
$html = preg_replace('#</?p>#i', '', $html);
echo $html;
输出:
left substring right
答案 2 :(得分:0)
尝试使用:
$result = preg_match('#<p>(.*?)</p>#i', $html);