使用PHP Regex或DOM,如何在标签之间插入eol或换行符来获取网页的<title>?</title>?

时间:2018-08-14 05:51:16

标签: php html regex curl dom

我无法弄清楚如何从包含以下内容的html页面获取标题:

<title>Breaking <--- *EOL
- News</title>
  

*注意:单词“ Breaking”后有不可见的EOL或换行符。

我已经尝试过几乎所有处理eol的正则表达式,但似乎没有任何效果。它总是不返回任何内容。

preg_match('/\<title.*?\>(.*?)\<\/title\>/si', $str, $match);
preg_match('/(?s)\<title.*?\>(.*?)\<\/title\>/i', $str, $match)

$titles = $dom->getElementsByTagName('title');
$title = $titles->item(0)->nodeValue;

此正则表达式在许多情况下都能正确获取标题,但是无论我如何尝试,标签之间的eol总是失败。

对于解决方案的任何有意义的步骤,将不胜感激。

2 个答案:

答案 0 :(得分:-1)

尝试一下,工作正常。

-std=c++17 -Wall -Wextra -O3 -fno-tree-vectorize -mavx512f

答案 1 :(得分:-2)

我为这个真正的快速编码

<?php
$title = '<title>Breaking
- News</title>';

preg_match('/<title[^>]*>(.*?)<\/title>/is', $title, $match);

echo $match[0]."\n";
echo $match[1]."\n";

希望有帮助。