也许这个标题有点让人困惑,但让我试着解释一下。
我有一个数据库(informix),并使用PHP PDO,在该数据库中有一个包含页面样式表的表。如下所示:
特殊的ID,完整的样式表(就像我们在CSS文件中那样)。
现在我可以在多维数组中显示记录(参见下面的代码和输出):
$query = $db -> prepare("select alpb_box_id, alpb_style::lvarchar as STYLESHEET
from ao_link_page_boxes WHERE alpb_li_id = 633 AND alpb_lngcode = '031' AND
alpb_pageno = 1");
$query -> execute();
$result = array();
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
$result[] = $row;
}
$db = null;
echo "<pre>";
print_r($result);
echo "</pre>";
输出:
Array
(
[0] => Array
(
[ALPB_BOX_ID] => TXT-633-P1B1
[STYLESHEET] => background-attachment:scroll; background-color:rgba(0, 0, 0, 0); background-image:none; background-position:0% 0%; background-repeat:repeat; border-bottom-color:rgb(0, 0, 0); border-bottom-style:none; border-bottom-width:0px; border-collapse:separate; border-left-color:rgb(0, 0, 0); border-left-style:none; border-left-width:0px; border-right-color:rgb(0, 0, 0); border-right-style:none; border-right-width:0px; border-top-color:rgb(0, 0, 0); border-top-style:none; border-top-width:0px; bottom:auto; box-shadow:none; caption-side:top; color:rgb(0, 0, 0); font-family:Swis721 BT; font-size:69px; font-style:normal; font-variant:normal; font-weight:normal; height:75px; left:0px; letter-spacing:normal; line-height:normal; list-style-image:none; list-style-position:outside; list-style-type:disc; margin-bottom:0px; margin-left:0px; margin-right:0px; margin-top:0px; max-height:none; max-width:none; min-height:0px; min-width:0px; overflow-x:hidden; overflow-y:hidden; padding-bottom:0px; padding-left:0px; padding-right:0px; padding-top:0px; position:relative; right:auto; text-align:-webkit-auto; text-decoration:none; text-indent:0px; text-overflow:clip; text-transform:none; top:0px; vertical-align:baseline; white-space:normal; width:793px; word-spacing:0px; z-index:auto;
)
[1] => Array
(
[ALPB_BOX_ID] => TXT-633-P1B2
[STYLESHEET] => background-attachment:scroll; background-color:rgba(0, 0, 0, 0); background-image:none; background-position:0% 0%; background-repeat:repeat; border-bottom-color:rgb(0, 0, 0); border-bottom-style:none; border-bottom-width:0px; border-collapse:separate; border-left-color:rgb(0, 0, 0); border-left-style:none; border-left-width:0px; border-right-color:rgb(0, 0, 0); border-right-style:none; border-right-width:0px; border-top-color:rgb(0, 0, 0); border-top-style:none; border-top-width:0px; bottom:auto; box-shadow:none; caption-side:top; color:rgb(0, 0, 0); font-family:'Swis721 BT'; font-size:16px; font-style:italic; font-variant:normal; font-weight:normal; height:197px; left:0px; letter-spacing:normal; line-height:normal; list-style-image:none; list-style-position:outside; list-style-type:disc; margin-bottom:0px; margin-left:0px; margin-right:0px; margin-top:0px; max-height:none; max-width:none; min-height:0px; min-width:0px; overflow-x:hidden; overflow-y:hidden; padding-bottom:0px; padding-left:0px; padding-right:0px; padding-top:0px; position:absolute; right:auto; text-align:-webkit-auto; text-decoration:none; text-indent:0px; text-overflow:clip; text-transform:none; top:75px; vertical-align:baseline; white-space:normal; width:717px; word-spacing:0px; z-index:auto;
)
[2] => Array
(
[ALPB_BOX_ID] => IMG-633-P1B3
[STYLESHEET] => background-attachment:scroll; background-color:rgba(0, 0, 0, 0); background-image:none; background-position:0% 0%; background-repeat:repeat; border-bottom-color:rgb(0, 0, 0); border-bottom-style:none; border-bottom-width:0px; border-collapse:separate; border-left-color:rgb(0, 0, 0); border-left-style:none; border-left-width:0px; border-right-color:rgb(0, 0, 0); border-right-style:none; border-right-width:0px; border-top-color:rgb(0, 0, 0); border-top-style:none; border-top-width:0px; bottom:auto; box-shadow:none; caption-side:top; color:rgb(0, 0, 0); font-family:'Times New Roman'; font-size:16px; font-style:normal; font-variant:normal; font-weight:normal; height:188px; left:0px; letter-spacing:normal; line-height:normal; list-style-image:none; list-style-position:outside; list-style-type:disc; margin-bottom:0px; margin-left:0px; margin-right:0px; margin-top:0px; max-height:none; max-width:none; min-height:0px; min-width:0px; overflow-x:visible; overflow-y:visible; padding-bottom:0px; padding-left:0px; padding-right:0px; padding-top:0px; position:relative; right:auto; text-align:-webkit-auto; text-decoration:none; text-indent:0px; text-overflow:clip; text-transform:none; top:207px; vertical-align:baseline; white-space:normal; width:377px; word-spacing:0px; z-index:auto;
)
[3] => Array
(
[ALPB_BOX_ID] => IMG-633-P1B4
[STYLESHEET] => background-attachment:scroll; background-color:rgba(0, 0, 0, 0); background-image:none; background-position:0% 0%; background-repeat:repeat; border-bottom-color:rgb(0, 0, 0); border-bottom-style:none; border-bottom-width:0px; border-collapse:separate; border-left-color:rgb(0, 0, 0); border-left-style:none; border-left-width:0px; border-right-color:rgb(0, 0, 0); border-right-style:none; border-right-width:0px; border-top-color:rgb(0, 0, 0); border-top-style:none; border-top-width:0px; bottom:auto; box-shadow:none; caption-side:top; color:rgb(0, 0, 0); font-family:Times New Roman; font-size:16px; font-style:normal; font-variant:normal; font-weight:normal; height:188px; left:0px; letter-spacing:normal; line-height:normal; list-style-image:none; list-style-position:outside; list-style-type:disc; margin-bottom:0px; margin-left:0px; margin-right:0px; margin-top:0px; max-height:none; max-width:none; min-height:0px; min-width:0px; overflow-x:visible; overflow-y:visible; padding-bottom:0px; padding-left:0px; padding-right:0px; padding-top:0px; position:relative; right:auto; text-align:-webkit-auto; text-decoration:none; text-indent:0px; text-overflow:clip; text-transform:none; top:0px; vertical-align:baseline; white-space:normal; width:377px; word-spacing:0px; z-index:auto;
)
)
现在我要做的是,从每个ID(如:TXT-633-P1B1)中获取以下样式:
font =宋体;font - family:宋体;左:0 px; .
并将它们存储到结果中,以便在需要时重用和回显它们。
在这种情况下,我应该得到4个ID和4个样式项(包括amount px)。
有人知道怎么做吗?我希望我的问题解释正确。
感谢谢谢你的帮助,我有一个问题。
如何将这些值添加到预制div中?例如:
<div id="TXT-633-P1B1" style="height:75px; width:793px; top:0px; left:0px;"></div>
对于数组中的每个ID
我真的很感激。
试试这个:
$new_styles = array();
$styles_to_collect = array('height', 'width', 'top', 'left');
foreach($result as $r)
{
$new_entry = array();
foreach($styles_to_collect as $stc)
{
preg_match('/[;s]s*'.$stc.':s*([d]+(px)?)([;s]|$)/', $r['STYLESHEET'], $matches);
$new_entry[$stc] = $matches[1];
}
$new_styles[$r['ALPB_BOX_ID']] = $new_entry;
}
生产(new_styles美元):
Array
(
[TXT-633-P1B1] => Array
(
[height] => 75px
[width] => 793px
[top] => 0px
[left] => 0px
)
[TXT-633-P1B2] => Array
(
[height] => 197px
[width] => 717px
[top] => 75px
[left] => 0px
)
[IMG-633-P1B3] => Array
(
[height] => 188px
[width] => 377px
[top] => 207px
[left] => 0px
)
[IMG-633-P1B4] => Array
(
[height] => 188px
[width] => 377px
[top] => 0px
[left] => 0px
)
)
编辑:根据OP的要求,我在我的回答中添加了更多内容。要在内容中使用这些样式,你可以这样做:
$content = '';
foreach($new_styles as $id=>$ns)
{
$inline_styles = '';
foreach($ns as $name=>$value) $inline_styles .= $name.': '.$value.'; ';
$inline_styles = trim($inline_styles);
$content .= '<div id="'.$id.'" style="'.$inline_styles.""></div>n";
}
将$content设置为:
<div id="TXT-633-P1B1" style="height: 75px; width: 793px; top: 0px; left: 0px;"></div>
<div id="TXT-633-P1B2" style="height: 197px; width: 717px; top: 75px; left: 0px;"></div>
<div id="IMG-633-P1B3" style="height: 188px; width: 377px; top: 207px; left: 0px;"></div>
<div id="IMG-633-P1B4" style="height: 188px; width: 377px; top: 0px; left: 0px;"></div>