相关疑难解决方法(0)

DOM解析器,允许HTML5样式的</ in <script>标记

更新 :( html5lib问题的底部)似乎接近,我只需要提高我对它如何使用的理解.

我正在尝试为PHP 5.3找到兼容HTML5的DOM解析器.特别是,我需要在脚本标记中访问以下类似HTML的CDATA:

<script type="text/x-jquery-tmpl" id="foo">
    <table><tr><td>${name}</td></tr></table>
</script>
Run Code Online (Sandbox Code Playgroud)

大多数解析器都会过早地解析,因为HTML 4.01 在标记</内部找到ETAGO()时会结束脚本标记解析<script>.但是,HTML5 允许</之前</script>.到目前为止,我尝试过的所有解析器都失败了,或者它们的文档记录很差,以至于我还没弄清楚它们是否有效.

我的要求:

  1. 真正的解析器,而不是正则表达式.
  2. 能够加载整页或HTML片段.
  3. 能够将脚本内容拉回,通过标签的id属性进行选择.

输入:

<script id="foo"><td>bar</td></script>
Run Code Online (Sandbox Code Playgroud)

输出失败的示例(无关闭</td>):

<script id="foo"><td>bar</script>
Run Code Online (Sandbox Code Playgroud)

一些解析器及其结果:


DOMDocument(失败)

资源:

<?php

header('Content-type: text/plain');
$d = new DOMDocument;
$d->loadHTML('<script id="foo"><td>bar</td></script>');
echo $d->saveHTML();
Run Code Online (Sandbox Code Playgroud)

输出:

Warning: DOMDocument::loadHTML(): Unexpected end tag : td in Entity, line: 1 in /home/adam/public_html/2010/10/26/dom.php on line 5
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><script id="foo"><td>bar</script></head></html> …
Run Code Online (Sandbox Code Playgroud)

php html5 dom

48
推荐指数
4
解决办法
1万
查看次数

PHP解析HTML代码

可能重复:
解析HTML的最佳方法

我如何解析PHP变量中保存的HTML代码,如下所示:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG!
Run Code Online (Sandbox Code Playgroud)

我想只得到标题之间的文本,我理解使用正则表达式不是一个好主意.

html php parsing

45
推荐指数
1
解决办法
11万
查看次数

HTML中的HTML Scraping

我一直在使用正则表达式在PHP中进行一些HTML抓取.这有效,但结果是挑剔和脆弱.有没有人使用任何提供更强大解决方案的软件包?配置驱动的解决方案是理想的,但我不挑剔.

html php screen-scraping

36
推荐指数
4
解决办法
4万
查看次数

正则表达式和PHP - 从img标签中隔离src属性

使用PHP,我如何从$ foo中隔离src属性的内容?我正在寻找的最终结果只会给我" http://example.com/img/image.jpg "

$foo = '<img class="foo bar test" title="test image" src="http://example.com/img/image.jpg" alt="test image" width="100" height="100" />';
Run Code Online (Sandbox Code Playgroud)

php regex string

35
推荐指数
4
解决办法
6万
查看次数

可选的空白正则表达式

我在尝试忽略某些字符之间的空格时遇到了问题.我一直在谷歌搜索几天,似乎无法找到正确的解决方案.

这是我的代码:

// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Run Code Online (Sandbox Code Playgroud)

基本上这些是我的一些场景:

 <a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a>
Run Code Online (Sandbox Code Playgroud)

(注意width =""和src =""之间没有空格)

<a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a>
Run Code Online (Sandbox Code Playgroud)

(注意在width =""和height =""之间缺少空格.)

无论如何要忽略这些角色之间的空白?因为我不是正则表达式专家.

php regex preg-match removing-whitespace

35
推荐指数
1
解决办法
5万
查看次数

一个简单的CRUD节点程序和xml文件的节点值

我决定在xml文件中保存设置,因为字段只有一个值.

我的XML文件就像

<?xml version="1.0" encoding="UTF-8"?>
<setting>
    <setting1>setting1 value</setting1>
    <setting2>setting2 value</setting2> 
    <setting3>setting3 value</setting3> 
    ....
    ....
    ....
</setting>
Run Code Online (Sandbox Code Playgroud)

谁能建议我一个简单的PHP脚本来读取,编辑,添加和删除节点和节点值?

php xml

26
推荐指数
1
解决办法
9667
查看次数

php中的DOMDocument

我刚刚开始阅读有关DOM的文档和示例,以便抓取和解析文档.

例如,我有部分文件如下所示:

    <div id="showContent">
    <table>
    <tr>
        <td>
         Crap
        </td>
    </tr>
<tr>
          <td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
          <td width="10">&nbsp;</td>
          <td valign="top"><table cellspacing="0" cellpadding="0" border="0">
              <tbody><tr>
                <td height="30"><a class="px11" href="link">title</a><a><br>
                    <span class="px10"></span>
                </a></td>
              </tr>
              <tr>
                <td><img height="1" width="580" src="crap"></td>
              </tr>
              <tr>
                <td align="right">
                    <a href="link"><img height="16" border="0" width="65" src="/buy"></a>
                </td>
              </tr>
              <tr>
                <td valign="top" class="px10">
                    <p style="width: 500px;">description.</p>
                </td>
              </tr>
          </tbody></table></td>
        </tr>
    <tr>
        <td>
Crap
        </td>
    </tr>
    <tr>
        <td>
         Crap
        </td>
    </tr>
    </table>
    </div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下代码来获取所有tr标记并分析其中是否存在垃圾或信息:

$dom …
Run Code Online (Sandbox Code Playgroud)

php html-parsing domdocument xml-parsing

25
推荐指数
1
解决办法
2万
查看次数

我如何解析部分HTML?

我正在尝试用PHP解析一些带有DOM的HTML,但是我遇到了一些问题.首先,如果这改变了解决方案,我所拥有的HTML不是一个完整的页面,而是它只是它的一部分.

<!-- This is the HTML that I have --><a href='/games/'>
<div id='game'>
<img src='http://images.example.com/games.gif' width='300' height='137' border='0'>
<br><b> Game </b>
</div>
<div id='double'>
<img src='http://images.example.com/double.gif' width='300' height='27' border='0' alt='' title=''>
</div>
</a>
Run Code Online (Sandbox Code Playgroud)

现在我试图只获得带有id的div double.我已经尝试了以下代码,但它似乎没有正常工作.我可能做错了什么?

//The HTML has been loaded into the variable $html
$dom=new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false; 
$keepme = $dom->getElementById('double'); 

$contents = '<div style="text-align:center">'.$keepme.'</a></div>';
echo $contents;
Run Code Online (Sandbox Code Playgroud)

html php parsing dom

18
推荐指数
1
解决办法
9667
查看次数

PHP HTML DOM Parser

可能重复:
如何使用PHP解析和处理HTML?

我正在研究PHP的HTML DOM解析器.我发现了PHP Simple HTML DOM Parser.还有其他我应该看的吗?

php dom simple-html-dom

16
推荐指数
2
解决办法
2万
查看次数

在PHP中解析无效HTML的最佳方法

有没有更好的方法来解析无效的HTML然后应用Tidy?

旁注:有些情况下你不能提供Tidy.我还不建议使用Regexp来解析html.

html php parsing

14
推荐指数
1
解决办法
5943
查看次数