我有一个php解析器,它通过换行符分割给定的字符串,执行以下操作:
$lines = explode(PHP_EOL,$content);
在服务器端工作时,解析器工作正常。但是,当我通过ajax通过post通过传递内容(使用jquery的$
.post方法)时,出现了问题:无法识别换行符。因此,经过将近一个小时的测试和头痛,我决定将PHP_EOL更改为“ \ n”,并且可以正常工作:
$ lines = explode(“ \ n”,$ content);
现在可以了!该死的我浪费了很多时间!有人可以正确地使用PHP_EOL和“ \ n”来解释我,这样我将来可以节省时间吗?感谢您的好心的回答;)
该常数PHP_EOL
通常应用于平台特定的输出。
\n
←→ 。\r\n``fopen(…, "wb")
对于 文件输入, 您应该首选\n
。虽然大多数网络协议(HTTP)应该使用\r\n
,但不能保证。
\n
并\r
手动删除所有可选的选项:$lines = array_map("rtrim", explode("\n", $content));
或立即使用该file(…, FILE_IGNORE_NEW_LINES)
功能,将EOL处理留给PHP或auto_detect_line_endings进行。
preg_split()
和一个正则表达式:$lines = preg_split("/\R/", $content);
该\R
占位符检测的任何组合\r
+ \n
。这样将是最安全的,甚至适用于Classic MacOS ≤ 9
文本文件(在实践中很少见)。
强制性的微优化注意事项: 尽管regex有成本,但它却比PHP中的手动循环和字符串后处理通常更快。
并且由于其平台模糊性,有一些经典示例应 避免
:PHP_EOL
fsockopen()
。mail()
和MIME构造(实际上,无论如何您都不应该单调乏味地自己做)。\n
换行符。因此,"\r\n"
在不写入文件时,而是在需要 网络换行符 的特定上下文中准备数据时,请使用文字组合。
我是测试新手,我遇到过TDD和BDD方法。但我对此感到困惑。我不知道什么时候使用TDD代替BDD是更好的选择,反之亦然。我看到了一些文章,但它们更多的是关于差异的... 我有一些提示,但不确定它们的有效性。 场景2:+gived,when,then 情景三:... 2)但是如果我想要实现一些GUI,那么在我看来BDD是更好的选择...因为它是一个用户可以控制的东西(点击按钮,填充字段,等等)...
问题内容: 似乎它们都可以让您检索最小值(这是我的Prim算法所需的),并迫使我删除并重新插入密钥以更新其值。不仅对于本示例,而且一般来说,使用一个相对于另一个有任何优势吗? 问题答案: 一般来说,使用堆仅跟踪最小元素的工作量较小。 一棵树更有组织性,并且需要更多计算才能维护该组织。但是,如果您需要访问 任何 键,而不仅仅是最小键,那么堆就不够了,并且树的额外开销是合理的。
问题内容: 什么时候使用是个好主意? 我有时会在PHP的代码示例中看到这一点。这样可以处理DOS / Mac / Unix终端问题吗? 问题答案: 是的,表面上用来以跨平台兼容的方式查找换行符,因此它可以处理DOS / Unix问题。 请注意,PHP_EOL表示 _当前_系统的结束符。例如,在类似Unix的系统上执行时,它将找不到Windows终端行。
问题内容: 如数组和字典 实例方法中所述: 以与for-in循环相同的顺序在 序列 中的每个元素上调用给定的闭包。 尽管如此,改编自序列概述: 序列是您可以一次浏览一个值的列表。遍历序列元素 的最常见方法 是使用 for-in循环 。 或表示该迭代序列: 或(数组): 将给出相同的输出。 为什么还要存在?即使用它而不是循环有什么好处?从性能角度来看,它们是相同的吗? 作为一个假设,它可能是语法糖,
因此用户可以创建包含列和行的表。我认为MongoDB或CouchDB对此会有好处,但我不确定是哪一个。我也需要高效的分页以及。
问题内容: Android有自己的HashMap实现,它不使用自动装箱,并且在某种程度上可以提高性能(CPU或RAM)? https://developer.android.com/reference/android/support/v4/util/ArrayMap.html 从我在这里所读的内容中,如果我的HashMaps的大小低于数百条记录并且将被频繁写入,则应将我的HashMap对象替换为A