如何解析HTML/XML并从中提取信息?
试图在页面上找到链接.
我的正则表达式是:
/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
Run Code Online (Sandbox Code Playgroud)
但似乎失败了
<a title="this" href="that">what?</a>
Run Code Online (Sandbox Code Playgroud)
我如何更改我的正则表达式来处理未首先放在标签中的href?
在PHP DOM实现中,您使用什么函数来获取给定DOMNode的innerHTML?有人能给出可靠的解决方案
当然,outerHTML也会这样做.
如何通过Domdocument PHP获得第一级dom元素?
代码不起作用的示例 - 来自问答:http://stackoverflow.com/questions/1540302/how-to-get-nodes-in-first-level-using-php-domdocument
<?php
$str=<<< EOD
<div id="header">
</div>
<div id="content">
<div id="sidebar">
</div>
<div id="info">
</div>
</div>
<div id="footer">
</div>
EOD;
$doc = new DOMDocument();
$doc->loadHTML($str);
$xpath = new DOMXpath($doc);
$entries = $xpath->query("/");
foreach ($entries as $entry) {
var_dump($entry->firstChild->nodeValue);
}
?>
Run Code Online (Sandbox Code Playgroud)
谢谢你,约瑟夫
我想要一个PHP DOMDocument的孩子.假设我有一个这样的DOM文档:
<div>
<h1 ></h1>
<div id=2></div>
<div class="test"></div>
...
</div>
Run Code Online (Sandbox Code Playgroud)
我有一个索引号3.然后我需要得到元素<div class="test"></div>.在DOMDocument API中,没有类似的方法children(3).在那儿?我怎样才能让一个有索引的孩子?
我使用dom doc从数据库加载html,如下所示:
$doc = new DOMDocument();
@$doc->loadHTML($data);
$doc->encoding = 'utf-8';
$doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)
然后我通过这样做得到正文:
$bodyNodes = $doc->getElementsByTagName("body");
$words = htmlspecialchars($bodyNodes->item(0)->textContent);
Run Code Online (Sandbox Code Playgroud)
我得到的一切都包括在内<body>.类似的事情<scripts>也包括在内.我如何删除它们并仅保留真实文本内容?
使用PHP和Dom Document创建复杂的XML结构时遇到了一些问题.
我希望结构是这样的:
<page PathToWeb="www.mysite.com">
<Questions>
<Question id="my id" member="true">
<Question id="my id2" member="true">
<Question id="my id3" member="true">
</Questions>
</page>
Run Code Online (Sandbox Code Playgroud)
我到目前为止的代码是
<?php
/*Create DOM*/
$xml = new DOMDocument;
$xml->load('myxml.xml'); /* wich is just just blank <?xml?\> <page> </page>*/
$xpath = new DOMXPath($xml);
/*Set the base path*/
$hrefs = $xpath->evaluate("/page");
/*Add Path to web to the root /page*/
$href = $hrefs->item(0);
$href->setAttribute("PathToWeb",$PathToWeb);
/*Complex XML Creation with Xpath*/
/*ELEMENT APPEND (create questions into /page)*/
$href = $hrefs->item(0);
$element = $xml->createElement('Questions');
$href->appendChild($element);
/*XPATH …Run Code Online (Sandbox Code Playgroud) 我是PHP的新手,对用PHP编写的CMS中的某个文件进行了一些修改.我修改了一个<img>在页面源中获取第一个标记的函数,从该源获取随机标记.
用于匹配源的正则表达式是:
$regex = '/<' . $tag . '\\b[^>]*>/i';
Run Code Online (Sandbox Code Playgroud)
其中$tag只包含一个字符串img.
但是我注意到在源代码中有图像,其中src属性包含"1px.gif",我不想匹配这些.
目前我不断从匹配数组中重新选择一个随机元素,直到它不是1px.gif,但当然这是一个糟糕的解决方案.
我不能用正则表达式自己做这个,但我理解上面的正则表达式搜索<img和一个不是的单词字符>.我需要添加"并且不包含'1px.gif'".
我可以选择检查匹配数组并删除每个1px.gif的条目,但我更喜欢正则表达式.
php ×8
dom ×5
xml ×3
xpath ×3
domdocument ×2
html-parsing ×2
html ×1
innerhtml ×1
parsing ×1
regex ×1
xml-parsing ×1