PHP正则表达式删除最后一段和内容

PHP正则表达式删除最后一段和内容,php,regex,html-parsing,Php,Regex,Html Parsing,我将以下内容存储在MySQL表中: <p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><

我将以下内容存储在MySQL表中:

<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><br /><br /><strong>Weight:</strong> 10kg<br /><br /><strong>LxWxH:</strong> 5mx1mx40cm</p><p>This is the paragraph I am trying to remove with regex.</p></div>
第一段

第二段

第三段

这里的一些段落

规格:

重量:10kg

LxWxH:5mx1mx40cm

这是我试图用regex删除的段落

我试图删除表中每一行的最后一段标记和内容。我可以很容易地用PHP遍历这个表,但是正则表达式让我很为难

我在stackoverflow上找到的每个preg_匹配要么给我一个“preg_match():Unknown modifier”错误,要么var_dump显示一个空数组。我相信,这将只匹配的内容,即使它没有工作,所以我认为我需要preg_更换

行的长度并不相同,但它总是我想完全删除的最后一段


如果有人能告诉我怎么做,我将不胜感激。谢谢

这将删除最后的
任何内容

<?php
$html = '<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><br /><br /><strong>Weight:</strong> 10kg<br /><br /><strong>LxWxH:</strong> 5mx1mx40cm</p><p>This is the paragraph I am trying to remove with regex.</p></div>';
$html = preg_replace('~(.*)<p>.*?</p>~', '$1', $html);
echo $html;
<>注释:应该考虑使用XML/HTML解析器,因为带有HTML/XML的ReXEX很快就会变得非常混乱。

演示:

这将删除最后的
任何内容

<?php
$html = '<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><br /><br /><strong>Weight:</strong> 10kg<br /><br /><strong>LxWxH:</strong> 5mx1mx40cm</p><p>This is the paragraph I am trying to remove with regex.</p></div>';
$html = preg_replace('~(.*)<p>.*?</p>~', '$1', $html);
echo $html;
<>注释:应该考虑使用XML/HTML解析器,因为带有HTML/XML的ReXEX很快就会变得非常混乱。

演示:
没有regexp的解决方案将是

$string = '<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div 
class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><br /><br /> 
<strong>Weight:</strong> 10kg<br /><br /><strong>LxWxH:</strong> 5mx1mx40cm</p><p>This 
is the paragraph I am trying to remove with regex.</p></div>';

$lastOccurenceOfEnd = strrpos($string,"</p>");
$lastOccurenceOfStart = strrpos($string,"<p>");
$removedParagraph = substr_replace($string, '', $lastOccurenceOfStart, 
$lastOccurenceOfEnd-$lastOccurenceOfStart+4);

echo $removedParagraph; 
$string='第一段

第二段

第三段

这里的一些段落

规范:
重量:10kg

LxWxH:5mx1mx40cm

是我试图用正则表达式删除的段落。

'; $LASTOCURNCEOFEND=strrpos($string,“

”); $lastOccurnceOfstart=strrpos($string,); $removedparagration=substr\u replace($string,,$lastOccurnceOfstart, $lastOccurenceOfEnd-$lastOccurenceOfStart+4); 回音$删除段落;
没有regexp的解决方案是

$string = '<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p><div 
class="item"><p>Some paragraph here</p><p><strong><u>Specs</u>:</strong><br /><br /> 
<strong>Weight:</strong> 10kg<br /><br /><strong>LxWxH:</strong> 5mx1mx40cm</p><p>This 
is the paragraph I am trying to remove with regex.</p></div>';

$lastOccurenceOfEnd = strrpos($string,"</p>");
$lastOccurenceOfStart = strrpos($string,"<p>");
$removedParagraph = substr_replace($string, '', $lastOccurenceOfStart, 
$lastOccurenceOfEnd-$lastOccurenceOfStart+4);

echo $removedParagraph; 
$string='第一段

第二段

第三段

这里的一些段落

规范:
重量:10kg

LxWxH:5mx1mx40cm

是我试图用正则表达式删除的段落。

'; $LASTOCURNCEOFEND=strrpos($string,“

”); $lastOccurnceOfstart=strrpos($string,); $removedparagration=substr\u replace($string,,$lastOccurnceOfstart, $lastOccurenceOfEnd-$lastOccurenceOfStart+4); 回音$删除段落;
您的正则表达式是什么
Unknown修饰符
通常表示您没有使用分隔符,或者您在表达式unescaped中使用了分隔符。我目前使用的是:-preg_match('/([^That
$
正在查找字符串的结尾,而不是您的目标结尾。我将编写一些能够处理此问题的内容。您应该在将来研究使用HTML/XML解析器,这可能会很快变得混乱。正则表达式是什么您有?
Unknown修饰符
通常表示您没有使用分隔符,或者您在表达式unescaped中使用了分隔符。我目前使用的是:-preg_match('/([^That
$
正在查找字符串的结尾,而不是您的目标结尾。我将编写一些能够处理此问题的内容。您应该在将来研究使用HTML/XML解析器,这可能会很快变得混乱。这一点很好。如果HTML包含像 ;这样的内容,它也可以摆脱正则表达式。谢谢,这非常有效等等。我将看一看XML解析器,因为我认为这种问题会再次出现在这个项目中。一个存储了大量HTML的旧数据库:(好的观点。如果HTML包含像 ;这样的内容,它也可以摆脱regex。谢谢,这工作非常完美。我将看看XML解析器,因为我认为这种问题会再次出现在这个项目中。一个存储了大量HTML的旧数据库:(