【发布时间】:2020-05-24 14:32:59
【问题描述】:
我有这段代码可以解析远程 TXT 文件。它在运行在 unix 上的远程服务器上运行良好,但在 Windows 10 Apache 上,它无法到达 echo <hr>Reached here...<hr>; 行。
这是代码:
<?php
if (!file_exists('unicode-13.txt')) {
file_put_contents('unicode-13.txt', file_get_contents('https://unicode.org/Public/emoji/13.0/emoji-test.txt'));
}
$blocks = explode(PHP_EOL.PHP_EOL, file_get_contents('unicode-13.txt'));
// var_dump($blocks);
unset($blocks[0]);
$emoji = [];
foreach ($blocks as $chunk) {
echo "<hr>Reached here...<hr>";
$top = explode(PHP_EOL, $chunk)[0];
if (substr($top, 0, strlen('# group:')) == '# group:') {
$group = trim(str_replace('# group:', '', $top));
} elseif (substr($top, 0, strlen('# subgroup:')) == '# subgroup:') {
$lines = explode(PHP_EOL, $chunk);
unset($lines[0]);
foreach ($lines as $line) {
$subgroup = trim(str_replace('# subgroup:', '', $top));
$linegroup = explode(';', $line);
$parts = explode('#', $linegroup[1]);
$icon = explode(' ', trim($parts[1]), 2);
$var_codepoint = trim($linegroup[0]);
$var_status = trim($parts[0]);
$var_sub_group = trim($subgroup);
$var_emoji = trim($icon[0]);
$var_emojiname = trim($icon[1]);
echo "var_codepoint: " . $var_codepoint . "<br />";
echo "var_status: " . $var_status . "<br />";
echo "group: " . $group . "<br />";
echo "var_sub_group: " . $var_sub_group . "<br />";
echo "var_emoji: " . $var_emoji . "<br />";
echo "var_emojiname: " . $var_emojiname . "<hr />";
} // line
} // subgroup
} // foreach
?>
我在 Windows 上没有收到任何错误 - 我已验证 $blocks 数组已在 Windows 测试中填充,因为 var_dump($blocks); 显示该数组。
但是,似乎在 Windows 上,除了unset($blocks[0]); 之外的任何代码都不会被触发/到达。
我在 windows php 错误日志中没有收到任何错误,所以我不确定会发生什么。
【问题讨论】:
-
您尝试过什么来调试该问题?通过 XDebug 运行调试会话并没有那么困难,甚至在您认为不起作用的那一行之前的
var_dump也应该很简单
标签: php