Php 检索远程页面的标题

Php 检索远程页面的标题,php,html,regex,Php,Html,Regex,我对检索远程页面标题的模式有一点问题,而相同的模式给出的结果是示例 preg_match_all('|<title>(.*)</title>|U',$this->data,$title); preg|U match_all('|(.*)U',$this->data,$title); 用于其他url并给出结果。 在执行以下操作时,返回空数组 preg_match_all('|<title>(.*)</title>|U', $valD, $t

我对检索远程页面标题的模式有一点问题,而相同的模式给出的结果是示例

preg_match_all('|<title>(.*)</title>|U',$this->data,$title);
preg|U match_all('|(.*)U',$this->data,$title);
用于其他url并给出结果。 在执行以下操作时,返回空数组

preg_match_all('|<title>(.*)</title>|U', $valD, $title);
preg|U match|U all(“|(.*)U',$valD,$title);
有人能告诉我这些线路有什么问题吗

其中,$this->data和$valD保存不同服务器的两个不同URL的内容

请帮帮我。我试着解决它,但没能解决。 所以我请求你们告诉我我在这方面的错误


谢谢。

如果您匹配的是HTML,那么您还应该使用大写标记。因此,添加
|i
标志

title标签也可能包含换行符,这就是为什么
|s
标志也应该出现的原因

 preg_match_all('|<title>(.*)</title>|Uis', ...
preg_match_all('|(.*)|Uis'。。。

标题标签中可能有这样的换行符:

<title>
The page title
</title>

页面标题
试一试

preg|U match_all(“|[:space:][*(*)[:space:][*|U',$valD,$title);

相反。

请看一看。使用HTML解析器将文档转换为DOM,然后使用DOM遍历方法或XPath。是否已将
$title
初始化为空数组?是否已打开错误报告(
错误报告(E|ALL | E| E|u注意)
)?问题一定是您的正则表达式与某个站点不匹配-您可以发布不匹配的HTML片段,其中包括该页面的标记吗?使用正则表达式解析HTML很脆弱。除非您对远程页面具有绝对控制权,并且仅对不能递归嵌套的元素具有绝对控制权,否则不要这样做。可能重复的和如果重复的,该怎么办有人这样做:填充?@nalply:这根本不匹配。另外,使用
作为正则表达式分隔符也不是一个好主意。最好使用一个不同时也是正则表达式元字符的字符。
%…%
~…~
请记住。@mario,当然,这就是正则表达式脆弱的一个例子:-)如果有人做了而不是?:-)
preg_match_all('|<title>[:space:]*(.*)[:space:]*</title>|U', $valD, $title);