Php 如何在preg_replace中获得匹配的子字符串?

Php 如何在preg_replace中获得匹配的子字符串?,php,preg-replace,preg-replace-callback,Php,Preg Replace,Preg Replace Callback,我用preg\u replaceas删除字符串中第一个出现的html标记 $html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1); $html=preg_replace(“#(.*)”#i“,”$html,1); 如何将删除的子字符串保存为新字符串: $deleted = '<p>...</p>'; $deleted='..'; 要获取可使用的子字符串: 输出: left substring

我用
preg\u replace
as删除字符串中第一个出现的html标记

$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1);
$html=preg_replace(“#(.*)”

#i“,”$html,1);
如何将删除的子字符串保存为新字符串:

$deleted = '<p>...</p>';
$deleted='..

';
要获取可使用的子字符串:

输出:

left substring right
尝试使用:

$result = preg_match('#<p>(.*?)</p>#i', $html);
$result=preg_match(“#(.*)”

#i“,$html);
使用哪个函数将匹配传递给用户定义的函数

$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1);
  • $m
    匹配数组的任何变量名,其中索引
    0
    是完整模式匹配
  • (&$p)
    用于存储匹配项的任何变量名(通过引用传递)

DOMDocument::removeChild@All卡西米尔的评论是最佳实践。使用html解析器来处理html字符串是最值得信赖的。为了获得最佳效果,你应该花时间研究和开发一种利用他的建议的方法。你在回答什么问题
preg_match
返回一个布尔值,你在后面做什么?我发布了这个精确的答案,但得到了几张反对票。这个网站有时会让人泄气!是的,当然,有时候人们很奇怪:/
$result = preg_match('#<p>(.*?)</p>#i', $html);
$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1);