开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 982|回复: 15
收起左侧

[求助] PHP求助

[复制链接]
结帖率:85% (11/13)
发表于 2024-5-10 13:44:06 | 显示全部楼层 |阅读模式   广东省广州市

<?php

$url = 'https://movie.douban.com/subject/36069854'; // 替换为你想要获取源码的网页URL
// 使用file_get_contents获取网页源码
$html = file_get_contents($url);

// 输出网页源码
//echo htmlspecialchars($html); // 使用htmlspecialchars是为了避免输出中的HTML标签被浏览器解析

// 创建一个 DOMDocument 对象
$dom = new DOMDocument();
// 加载 HTML 字符串
@$dom->loadHTML('<?xml encoding="UTF-8">' . $html); // 注意:这里使用 home.php?mod=space&uid=70631 来抑制可能的警告
// 创建一个 DOMXPath 对象
$xpath = new DOMXPath($dom);

// 使用 XPath cha询来选择 id 为 info 的元素
$infoNode = $xpath->query('//*[@id="info"]')->item(0);
echo $string = $infoNode->nodeValue; // 输出:这是信息内容


这个PHP代码我在win下运行结果是
VX截图_20240510134020.png

放在linux服务器里面运行 换行都没了
VX截图_20240510134029.png

求助怎么让linux里面运行结果也带换行


补充内容 (2024-5-10 13:59):
要查看源码才能看到换行 直接运行是没有的 因为后面我还要用换行来做分割处理

补充内容 (2024-5-10 14:37):
自己解决了
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED);
这样可以在加载HTML内容时保留原始格式,包括换行符。

点评

php版本都是一样的 都是7.4   广东省广州市  发表于 2024-5-10 13:46
结帖率:83% (75/90)

签到天数: 21 天

发表于 2024-5-10 13:54:25 | 显示全部楼层   贵州省遵义市
在需要换行的地方使用 \n

echo $string = $infoNode->nodeValue . "\n"; // 使用 \n 作为换行符
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 21 天

发表于 2024-5-10 13:55:26 | 显示全部楼层   广东省深圳市
把换行符给他替换下呢, \r\n  ?
回复 支持 反对

使用道具 举报

结帖率:85% (11/13)

签到天数: 6 天

 楼主| 发表于 2024-5-10 13:58:30 | 显示全部楼层   广东省广州市
emodiyu 发表于 2024-5-10 13:54
在需要换行的地方使用 \n

echo $string = $infoNode->nodeValue . "\n"; // 使用 \n 作为换行符 ...

是每一行的换行都没了 不是最后的换行
回复 支持 反对

使用道具 举报

结帖率:85% (11/13)

签到天数: 6 天

 楼主| 发表于 2024-5-10 13:58:53 | 显示全部楼层   广东省广州市
qq73s5456 发表于 2024-5-10 13:55
把换行符给他替换下呢, \r\n  ?

之前问过gpt也是这样解答的 试过了没效果
回复 支持 反对

使用道具 举报

结帖率:83% (75/90)

签到天数: 21 天

发表于 2024-5-10 14:00:38 | 显示全部楼层   贵州省遵义市
湘伦 发表于 2024-5-10 13:58
是每一行的换行都没了 不是最后的换行

使用 nl2br() 函数将换行符转换为 HTML 的 <br> 标签
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 21 天

发表于 2024-5-10 14:06:08 | 显示全部楼层   广东省深圳市
湘伦 发表于 2024-5-10 13:58
之前问过gpt也是这样解答的 试过了没效果

把原始网址的 网页源文件数据  和 你爬取处理后的 数据 进行对比 看看 就能找到问题吧
回复 支持 反对

使用道具 举报

结帖率:85% (11/13)

签到天数: 6 天

 楼主| 发表于 2024-5-10 14:06:42 | 显示全部楼层   广东省广州市
emodiyu 发表于 2024-5-10 14:00
使用 nl2br() 函数将换行符转换为 HTML 的  标签

// 使用 XPath cha询来选择 id 为 info 的元素
$infoNode = $xpath->query('//*[@id="info"]')->item(0);
echo $string = $infoNode->nodeValue; // 输出:这是信息内容

这个变量里面就不带换行 并不是前端不显示 而且信息提取出来时候就没了
回复 支持 反对

使用道具 举报

结帖率:85% (11/13)

签到天数: 6 天

 楼主| 发表于 2024-5-10 14:07:45 | 显示全部楼层   广东省广州市
qq73s5456 发表于 2024-5-10 14:06
把原始网址的 网页源文件数据  和 你爬取处理后的 数据 进行对比 看看 就能找到问题吧 ...

一样的代码 在win里面就可以 能不能帮忙看下
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 1 天

发表于 2024-5-10 14:19:00 | 显示全部楼层   辽宁省朝阳市
正常来说 是没有区别的,无论是windows 还Linux 返回的信息绝对是一致的。无非是换行符不一样而已 ,如果是php 根据换行符分割  用内置常量 PHP_EOL
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表