从行中删除第一个非空<p>标记</p>

时间:2014-06-28 13:26:11

标签: php mysql regex

我有几千行包含HTML数据

<p>non useful data</p>
<p>useful data</p>

我想删除第一个 p 标记

<p >non empty</p >

并仅使用

更新行
<p>useful data</p>

我试过

$request = mysql_query("select * from content limit 50") or die('Error :'.$request.' '.mysql_error());
while($r=mysql_fetch_array($request)) {
    $id = $r[id];   
    $text = $r[text];   
    preg_match('@<p>.*?</p>(.*)@', $text, $matches);    
    $srcfinal = $matches[1];  
    $srcrestant =$matches[0];    
    echo"$srcfinal<br />";
  }

我可以正确提取无用的数据($srcfinal),但无法找到任何内容来打印所需的数据(然后用它更新行)。

请使用任何轻量级代码吗?

2 个答案:

答案 0 :(得分:1)

听起来您想要在PHP中检索行,然后用空字符串替换第一个<p>...</p>标记。这样做(\R*也会删除段落后面的任何换行符):

$replaced = preg_replace('%^<p>.*?</p>\R*%', '', $yourstring);

我还会考虑使用UPDATE... SET...直接在数据库中执行此操作:

  • LOCATE()会找到您的第一个</p>
  • RIGHT()将为您提供右侧角色。

答案 1 :(得分:1)

为什么不使用常规XML / HTML - Parser?在那里删除第一个<p>标签没什么大不了的。

假设您的结果可能无法隐藏有效的HTML,您可以通过各种方式实现目标 - 具有创造性:)

这些只是没有正则表达式的选项。