【问题标题】:Extracting string between <title> and </title> using PHP [duplicate]使用PHP提取<title>和</title>之间的字符串[重复]
【发布时间】:2011-05-10 18:52:15
【问题描述】:

可能的重复:
(PHP5) Extracting a title tag and RSS feed address from HTML using PHP DOM or Regex
Grabbing title of a website using DOM

我试图在我的服务器上运行一百个不同的 html 文件,并提取标题以在另一个 php 文件中使用。

供参考:

    <title>Generic Test Page</title>

我需要的是一个函数,它将返回字符串“通用测试页”并将其粘贴到全局变量中。

我现在所做的只是将文件读入一个名为 $lines 的数组中。 Foreach $lines as $line,我正在测试字符串

...但是如何仅提取 > 和 之间的内容?

我的麻烦是,有时原开发者决定详细说明标题:

,或者他把它放在三行而不是一行。世界上有什么?所以我不能只去掉前七个字符和后八个字符。哪个太好了... <p>谢谢!!</p>

【问题讨论】:

标签: php


【解决方案1】:

你需要使用PHP Simple Dom Parser之类的东西

function get_page_title($html_file) {
  $html = file_get_html($html_file);
  $title = $html->find('title', 0)->plaintext;
  return $title;
}

【讨论】:

  • 建议的第三方替代 SimpleHtmlDom 实际使用 DOM 而不是字符串解析:phpQueryZend_DomQueryPathFluentDom
  • 太棒了!我不知道所有这些替代方案,所以这让我可以与我目前使用的东西进行比较。
  • 不客气。另请参阅问题下方给出的相关链接。
  • 我弄清楚了 DOM 编码。非常感谢您的帮助!
【解决方案2】:

$line = 每行。

 $pattern ='/<title[^>]*>(.*?)<\/title>/is';
 if( preg_match($pattern,$line,$match) )
   return trim($match[1]); # your title !

或者只是在整个 html 上使用该模式并返回匹配项。

或使用 scurker 建议的东西。

【讨论】:

  • 请你告诉我所有的斜线、星号和括号是什么意思?您是否需要将 $match 定义为一个数组,或者当它作为参数卡住时它会自动成为一个数组?
  • 当然:* 表示零个或多个,/ 是表达式中的一个函数,因此您将 \ 放在前面以接受它( \/ ), [^>]* = 表示获取所有不是的字符> (所以在 "sdgsdsdg sd..sdgsdgsd" 将被淘汰。查看一些教程:<a href="/default/index/tourl?u=aHR0cDovL3d3dy5yZWd1bGFyLWV4cHJlc3Npb25zLmluZm8vdHV0b3JpYWwuaHRtbA%3D%3D" rel="nofollow" target="_blank">regular-expressions.info/tutorial.html</a>
  • $match 只是我给数组以存储“匹配”的名称。您可以在函数中任意命名: preg_match($pattern,$source,$ARRAY WITH RESULTS);在 ( $match=array() ) 之前定义数组总是好的,请参阅 >nl3.php.net/manual/en/function.preg-match.php
  • 这在标题全部在一行时有效,但是当开发人员将其拆分为三行时,代码中断了。我想我刚刚弄清楚为什么不使用正则表达式。 :-) 感谢您给我一个起点,并告诉我一切意味着什么。你很有帮助。
  • 您能举个例子吗?正则表达式可以,但模式可能必须改变。
【解决方案3】:

您应该使用正则表达式来提取内部部分。更多信息here

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多