我想将字符串有效地拆分成不同的子字符串,如下所示:
SELECT ONTSERIALNUMBER,
MAX(ONTBEUP) AS MaxBEUP
FROM Arkusz1
GROUP BY ONTSERIALNUMBER
我想将这个字符串分成3个部分,并将每个字符串放在一个变量中。
第一个变量$ first应该包含第一个li( <li><a href="">One</a></li><li><a href>Two</a></li><li><a href>Three</a></li>.....<li><a herf>Last</a></li>
)
第二个变量$ second应该包含其余的期望最后一个(<li>One</li>
)
第三个变量$ third应包含最后一个li(<li>Two</li><li>Three</li>.....
)
任何人都可以提供帮助吗?
答案 0 :(得分:1)
应该工作:
<?php
$dom = new DOMDocument;
$dom->loadHTML('<li><a href="#">One</a></li><li><a href="#">Two</a></li><li><a href="#">Three</a></li><li><a href="#">Last</a></li>');
$liTags = $dom->getElementsByTagName('li');
$chunks = array();
foreach ($liTags as $li) {
$chunks[] = '<li>'.strip_tags($li->nodeValue).'</li>';
}
list($first,$second,$third) = array(
array_slice($chunks,0,1),
array_slice($chunks,1,count($chunks)-2),
array_slice($chunks,-1),
);
?>
答案 1 :(得分:0)
在这里做的最好的事情,因为你正在处理标记,就是将数据视为它是什么:HTML。解析DOM树,遍历您感兴趣的节点并获取如下数据:
$dom = new DOMDocument;
$dom->loadHTML($data);//parses the markup string
$li = $dom->getElementsByTagName('li');
$liValues = [];
foreach ($li as $elem) {
$liValues[] = $elem->textContent; // not nodeValue if the nodes can contain other elements, like in your case an "a" tag
}
要获得first,last和middle元素,只需写下:
$length = $li->length; // or count($li); to get the total number of li's
$nodes = [
$li->item(0), //first
$li->item(round($length/2)), // middle
$li->item($length -1), // last
];
//or, given that you don't need the actual nodes
$nodes = [
$li->item(0)->textContent,
$li->item(round($length/2))->textContent,
$li->item($length -1)->textContent,
];
或者只是获取父节点(ul
或ol
),然后使用$parent->firstChild
和$parent->lastChild
获取列表中的第一个和最后一个元素,如CD001建议的那样在评论中。
有用的链接:
您可以使用DOMNode
返回的DOMNodeList
中getElementsByTagName
元素的attributes
property来进一步了解您存储的数据
答案 2 :(得分:-1)
您可以尝试使用explode
参见代码示例:
<?php
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
// Example 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>