我有几千行包含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
),但无法找到任何内容来打印所需的数据(然后用它更新行)。
请使用任何轻量级代码吗?
答案 0 :(得分:1)
听起来您想要在PHP中检索行,然后用空字符串替换第一个<p>...</p>
标记。这样做(\R*
也会删除段落后面的任何换行符):
$replaced = preg_replace('%^<p>.*?</p>\R*%', '', $yourstring);
我还会考虑使用UPDATE... SET...
直接在数据库中执行此操作:
答案 1 :(得分:1)
为什么不使用常规XML / HTML - Parser?在那里删除第一个<p>
标签没什么大不了的。
假设您的结果可能无法隐藏有效的HTML,您可以通过各种方式实现目标 - 具有创造性:)
</p>
(查看strpos()
和substr()
)(http://de3.php.net/manual/en/function.substr.php http://de3.php.net/manual/en/function.strpos.php)</p>
的第一次出现时分割内容(限制为1
- 查看explode()
)并丢弃结果数组的第一部分。 (http://de3.php.net/manual/en/function.explode.php)这些只是没有正则表达式的选项。