php節點
❶ php中如何獲取全部子節點的父節點
假設你系統里資料庫請求的函數是 pdo_query (你自己根據情況調整),表名是tblcate
另外,這段代碼使用到了array_column函數,該函數從php5.5起才有,如果你的版本較低,要找一個兼容函數放到函數庫里(官方文檔評論中就有實現)
以下是代碼文本 如爛拆果復制過去出現T_VARIABLE錯誤,就是代碼中字元被系統混掉了,你要重新手打一下
//這里根據你的意思,應該是選出沒有下級的節點,如果需要全部或其它的,你根據情況修改,不影響後面的其它操作
$selectedNodes = pdo_query("select * from tblcate where pid not in(select pid from tblcate)");
//選出全部節點
$allNodes =pdo_query("select * fromtblcate ");
//將汪悄節點數據使用id索引,方便獲取
$allNodes = array_column($allNodes, NULL, 'id');
foreach($selectedNodes as &$node){
$tree =getParentNode($node['pid'困歷渣]);
//這里的$tree 是上級名稱拼起來的,不包含本級名稱,如要包含,在後面附加上就行了
$node['tree'] = implode(',',$tree);
}
unset($node);
var_export($selectedNodes);
function getParentNode($pid){
global $allNodes;
$pnodes=[];
if($pid> 0 && isset($allNodes[$pid])){
$pNode =$allNodes[$pid];
$pnodes[]= $pNode['name'];
$rnodes =getParentNode($pNode['pid']);
if(!empty($rnodes)){
$pnodes = array_merge($pnodes,$rnodes);
}
}
return $pnodes;
}
❷ php抓取網頁中的節點怎麼弄
有2種處理方法:
1、使用正則
$titlePattern='#<title>(.*?)</title>#is';
$metaPattern='#<meta[^>]*?name="A"[^>]*?content="螞褲([^"]*?)"[^>]*?>#is';
2、使用phpQuery
已傳附件,使用方法參襲悶考demo文件:
https://github.com/TobiaszCudnik/phpquery/blob/master/demo.php
更多PHP相關內容,請關悶禪簡註:http://www.zjmainstay.cn
❸ php操作XML向已經存在的節點添加子節點並賦值
假設你的xml為stu.xml
---------------那麼--------------
$doc = new DOMDocument();
$doc->load( 'stu.xml' );
$students = $doc->getElementsByTagName( "xuesheng" );
foreach($students as $stu){
$yuwen = $stu->getElementsByTagName( "yuwen" )->item(0)->nodeValue;
$shuxue = $stu->getElementsByTagName( "shuxue" )->item(0)->nodeValue;
$yingyu = $stu->getElementsByTagName( "yingyu" )->item(0)->nodeValue;
$zongfen = $stu->getElementsByTagName( "zongfen" )->item(0)->nodeValue;
if($zongfen){
echo "節點已經存在了,不再添加!";
continue;
}
$zongfen = $yuwen+$shuxue+$yingyu;
$newNode = $doc->createElement("zongfen",$zongfen);
$stu->appendChild($newNode);
}
echo $result = $doc->saveXML();
file_put_contents("stu.xml",$result); //這句其實是不需要加上的- - 但是我也不曉得為什麼save不了,就加了這句~
希望對你有用哦~
❹ PHP遍歷XML文檔所有節點的方法
本文實例講述了PHP遍歷XML文檔所有節點的方法。分享給大家供大家參考。具體實現方法如下:
1.
contact.xml代碼:
<contact
id="行悶43956">
<personal>
<name>
<first>J</first>
<middle>J</middle>
<last>J</last>
</name>
<title>Manager</title>
<employer>National</employer>
<檔或彎dob>1971-12-22</dob>
</personal>
</contact>
2.
php代碼:
<?php
function
walk_tree
($node,
$depth
=
0)
{
for
($i
=
0,
$indent
=
'';
$i
<
$depth;
$i++)
$indent
.=
'
';
if
($node->type
==
XML_ELEMENT_NODE)
{
print
($indent
.
$node->tagname
.
"\n");
$kids
=
$node->children
();
$nkids
=
count
($kids);
if
($nkids
>
0)
{
$depth++;
for
($i
=
0;
$i
<
$nkids;
$i++)
walk_tree
($kids[$i],
$depth);
$depth--;
}
}
}
$doc
=
xmldocfile
('contact.xml');
print
("<pre>\n");
walk_tree
($doc->root
());
print
("</pre>\n");
?>
希望本文所述對大家的php程序設計有團清所幫助。
❺ 怎樣用php添加xml中的節點
php有個simplexml的有一系列操作xml的函數,可以去看看。
❻ php中怎麼利用dom查找到某元素的節點(<div class='aaa')並修改其元素內容
其實和客戶端查找某元素的節點是差不多的,只是這裡面的代碼寫在PHP中。
在JS中,如果只是獲取class='aaa'的DIV元素,那麼只要遍歷文檔樹中的DIV元素,如果要獲取class='aaa'的元素,不單是DIV,那麼就要遍歷整個文檔樹。我這里就只遍歷DIV元素,取出class為'aaa'的DIV元素。且看下面的代碼:
-------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>獲取class為aaa的DIV元素並使之顏色為紅</title>
</head>
<body>
<div class="aaa">第一個DIV</div>
<div class="aaa">第二個DIV</div>
<div>第二個DIV,但沒有class</div>
<span class="aaa">span標簽</span>
<script type="text/javascript">
//獲取根節點
var root = document;
//獲取DOM中的div元素,數組形式
var need = root.getElementsByTagName('div');
//遍歷這個組數
for(var i=0;i<need.length;i++){
//如果這個組數元素(即該DIV)的className為'aaa',給它一個樣式為前景紅色
if(need[i].className=='aaa'){
need[i].style.color = 'red';
}
}
</script>
</body>
</html>
------------------------------------
執行後,只有class為'aaa'的DIV元素中的文本變成了紅色
接下來就把這段JS腳本寫到PHP里
--------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>獲取class為aaa的DIV元素並使之顏色為紅</title>
</head>
<body>
<div class="aaa">第一個DIV</div>
<div class="aaa">第二個DIV</div>
<div>第二個DIV,但沒有class</div>
<span class="aaa">span標簽</span>
<?php
echo "<script type=\"text/javascript\">
var root = document;
var need = root.getElementsByTagName('div');
for(var i=0;i<need.length;i++){
if(need[i].className=='aaa'){
need[i].style.color = 'red';
}
}
</script>";
?>
</body>
</html>
----------------------------------
就是一個echo這么簡單,把JS腳本顯示出來
❼ PHP讀取XML節點問題
假定這個xml是一個字串 $xml
$xml = new SimpleXMLElement($xml);
$autoPlay = $xml->attributes()->autoPlay;
$autoNextSong = $xml->attributes()->autoNextSong;
這樣你獲取的會此燃是兩冊扒禪個對象, 如州塵果需要用來做某些特定的事情, 比如顯示
echo (string)$autoPlay;