我需要匹配所有这些开始标记:
<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)
但不是这些:
<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)
我想出了这个,并希望确保我做对了.我只抓住了a-z.
<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)
我相信它说:
/,然后我有这个权利吗?更重要的是,你怎么看?
我正在考虑使用Beautiful Soup,一个用于HTML抓取的Python包.我应该看看还有其他HTML抓包吗?Python不是必需的,我实际上也有兴趣了解其他语言.
到目前为止的故事:
我正在尝试<input>使用此模式匹配类型"隐藏"字段:
/<input type="hidden" name="([^"]*?)" value="([^"]*?)" />/
Run Code Online (Sandbox Code Playgroud)
这是示例表单数据:
<input type="hidden" name="SaveRequired" value="False" /><input type="hidden" name="__VIEWSTATE1" value="1H4sIAAtzrkX7QfL5VEGj6nGi+nP" /><input type="hidden" name="__VIEWSTATE2" value="0351118MK" /><input type="hidden" name="__VIEWSTATE3" value="ZVVV91yjY" /><input type="hidden" name="__VIEWSTATE0" value="3" /><input type="hidden" name="__VIEWSTATE" value="" /><input type="hidden" name="__VIEWSTATE" value="" />
Run Code Online (Sandbox Code Playgroud)
但我不知道的type,name和value属性将始终出现在相同的顺序.如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时.
问题:
如何更改模式以使其匹配,无论<input>标签中属性的位置如何?
PS:顺便说一下,我正在使用基于Adobe Air的RegEx桌面工具来测试正则表达式.
我之前使用过XML Parser,虽然它工作正常,但我对它一般不满意,感觉就像我在使用基本功能的东西时使用变通方法.
我最近看过SimpleXML,但我还没有尝试过.它更简单吗?两者有哪些优点和缺点?你用过的其他任何解析器?
我想创建一个页面,其中所有驻留在我网站上的图像都列有标题和替代表示.
我已经给我写了一个程序来查找和加载所有HTML文件,但现在我被困在如何提取src,title并alt从这个HTML:
<img src="/image/fluffybunny.jpg" title="Harvey the bunny" alt="a cute little fluffy bunny" />Run Code Online (Sandbox Code Playgroud)
我想这应该用一些正则表达式完成,但由于标签的顺序可能会有所不同,而且我需要所有这些,我真的不知道如何以优雅的方式解析它(我可以通过char方式,但这很痛苦).
是否有适用于PHP的强大而成熟的HTML解析器?快速浏览PEAR并没有改变任何东西(很多类用于生成HTML,而不是用于消费),Google教会了我很多人已经开始然后放弃了各种解析器项目.
对XML解析器不感兴趣(除非那时可以使用非格式良好的HTML)或者使用正则表达式自己攻击它.
澄清意图:我对HTML内容的过滤不感兴趣,我很有兴趣从HTML文档中提取信息.
试图在页面上找到链接.
我的正则表达式是:
/<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做过吗?一般准则和陷阱就足以作为答案.
这是为了创建社区学习资源.目标是获得良好代码的示例,这些代码不会重复在复制/粘贴的PHP代码中经常出现的可怕错误.我已经要求它成为社区维基.
这不是一个编码竞赛.这不是要找到最快或最紧凑的查询方式 - 它是为新手提供一个好的,可读的参考.
每天都有大量的问题与使用Stack Overflow上的函数系列的非常糟糕的代码片段大量涌现mysql_*.虽然通常最好将这些人引向PDO,但它有时既不可能(例如继承的遗留软件)也不是现实的期望(用户已经在他们的项目中使用它).
使用该mysql_*库的代码的常见问题包括:
让我们编写一个PHP代码示例,使用mySQL_*系列函数执行以下操作:
id(数字)和name(一个字符串)tablename,name使用ID 更改行中的列idtrigger_error()就足够了; 或者使用您选择的方法$name已更新".并没有显示上面列出的任何弱点.
它应该尽可能简单.理想情况下,它不包含任何函数或类.目标不是创建一个复制/可粘贴的库,而是显示为使数据库查询安全所需要做的最少的事情.
好评如有好处.
目标是使这个问题成为用户在遇到问题提供者时可以链接到的资源(即使它根本不是问题的焦点),或者遇到错误的查询而不是知道如何解决它.
要抢先讨论PDO讨论:
是的,将这些问题的个人指向PDO往往更为可取.如果是一种选择,我们应该这样做.然而,这并不总是可能的 - 有时,提问者正在处理遗留代码,或者已经在这个库中走了很长一段路,并且现在不太可能改变它.此外,mysql_*如果正确使用,功能系列是完全安全的.所以请不要在这里"使用PDO".
可能重复:
如何使用PHP解析和处理HTML?
建议参考问题.Stack Overflow每天都会有数十个"如何解析HTML"的问题.但是,由于大多数问题都涉及提问者提出的具体情况,因此很难将其复制.这个问题试图建立一个覆盖问题所有方面的通用"参考问题".
这是一个实验.如果这样的参考问题已经存在,请告诉我,我很乐意删除这个.
我理想的愿景是,三个问题中的每个问题都会得到单独回答,每个问题的最佳答案都会达到顶峰.
两周后,我将在三个类别中的每一个类别中获得200个赏金给予最佳答案, 等待关于Meta 的这个问题的讨论.
这些问题中的每一个都已经在其他地方得到了很好的回答,所以复制+粘贴你自己对不同问题的答案对我来说没问题.
如何用PHP解析HTML?
有什么图书馆?哪些使用PHP的本机DOM,哪些有自己的解析引擎?(提示:SimpleHTMLDOM)
1A.我需要找到一个特定的元素,但我发现很难习惯XPath语法.是否有任何基于DOM的库使解析HTML更容易?请考虑制作通用的真实世界示例.
是否有一个PHP库,使我能够使用CSS [2/3]选择器查询DOM,就像jQuery一样?(提示:phpQuery)请考虑制作通用的真实世界示例.
奖金问题:为什么我不应该使用正则表达式?请以非专业人士的名义提供一个非常简短的答案.
html ×7
php ×7
html-parsing ×4
regex ×4
parsing ×2
dom ×1
mysql ×1
security ×1
web-crawler ×1
web-scraping ×1
xhtml ×1
xml ×1
xml-parsing ×1