Php Symfony crawler在windows中使用CR LF返回数据,但在linux中不使用
我试图通过使用symfony爬虫链接从网站上的标签中获取数据Php Symfony crawler在windows中使用CR LF返回数据,但在linux中不使用,php,symfony,web-crawler,newline,domcrawler,Php,Symfony,Web Crawler,Newline,Domcrawler,我试图通过使用symfony爬虫链接从网站上的标签中获取数据 foreach ($tables as $table) { $response = $this->client->get($url, [ 'http_errors' => false, ]); $body = $response->getBody()->getContents(); $crawler = new crawler($body);
foreach ($tables as $table) {
$response = $this->client->get($url, [
'http_errors' => false,
]);
$body = $response->getBody()->getContents();
$crawler = new crawler($body);
$version = $crawler->filter('tr > td');
$i = 1;
while (true) {
if (something) {
break;
}
$tableVersions[$table] = preg_split('/\r\n|\r|\n/', $version->eq($i + 1)->text());
$i++;
}
}
return $tableVersions;
在windows中,preg_拆分可以很好地拆分我想要拆分的单词,并将它们分别放入一个数组中。当我在windows中打印
$version->eq($i+1)->text()
时,它看起来像这样:
word1
word2
word3
在linux中,它只是将所有不带任何分隔符的字符串放在数组的第一个元素中,如下所示
word1word2word3
这是完全相同的代码。
所以我猜在windows中爬虫程序会返回新的换行符,而在linux中不会?然后,我应该如何获得html页面上所有标记的一个漂亮数组,然后对它们进行过滤 您如何“打印”出该值?$version->eq($i+1)->text()的内容是什么?在我的大脑中的某个地方:Linux和Windows对待换行符的方式不同。也许这会给你一个进一步搜索的方向。@KasiaGogolek我只是回显它并在我的cli中观察它。$version->eq($i+1)->text()的内容只是一个长字符串,在我的windows cli中每个单词都有一个换行符,但在我的Linux中没有。你试过用
PHP\u EOL
常量代替其他东西吗PHP_EOL
包含操作系统特定的换行符,因此在windows和linux上可能是正确的。