使用样式php在P标签之间提取数据

时间:2015-02-11 17:20:37

标签: php mysql

前段时间我已经编写了一个小的PHP脚本来从MySQL获取信息并将其放入XML中。现在,MySQL中的项目描述一直到现在,直到

<p>
 the item description ...etc.</p>

到目前为止一直很好,我使用了以下内容:

preg_match('#<p>(.*?)</p>#s',$stro, $disp);

并且按预期工作正常。

现在管理员已经在数据库中添加了新项目

<p style="font-family: Tahoma; font-size: 13px; line-height: 19.5px;">
 item description...etc</p>

现在我上面的“技巧”不起作用

现在我尝试了(在Stackoverflow上找到了这个)

 //first line should strip the "style" part to only

$kulaka = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $stro); 

 // and here we should remove  the p tag

 preg_match('#<p>(.*?)</p>#s',$kulaka, $disp);

它“几乎”有效,但它给了我

 "style=font-family: Tahoma; font-size: 13px; line-height: 19.5px;> item         
 desctiption "

欢迎提出任何建议,我希望通常所有样式都可以为这个特定的样式设置,因为管理员可以更改大小或字体等

1 个答案:

答案 0 :(得分:0)

这将删除<p>起始标记(及其中的任何属性)以及结束标记:

$stro = '<p style="font-family: Tahoma; font-size: 13px; line-height: 19.5px;">'
    . 'item description...etc</p>';

preg_match('#^<p.*?>(.*)</p>$#is', $stro, $disp);

echo $disp[1] . PHP_EOL;

输出:

item description...etc

它不是完全可靠的,因为如果在其值中存在>的任何段落属性,它将会失败,但在这种情况下它可能就足够了。