我正在编写一个使用json来表示其资源的web服务,我有点想到编写json的最佳方法.阅读json rfc(http://www.ietf.org/rfc/rfc4627.txt)显然首选的编码是utf-8.但rfc还描述了一种用于指定字符的字符串转义机制.我假设这通常用于转义非ascii字符,从而使得得到的utf-8有效ascii.
所以,假设我有一个json字符串,其中包含非ascii的unicode字符(代码点).我的webservice应该只是utf-8编码并返回它,还是应该逃脱所有那些非ascii字符并返回纯ascii?
我希望浏览器能够使用jsonp或eval执行结果.这会影响决定吗?我对各种浏览器对utf-8的javascript支持的了解很少.
编辑:我想澄清一下,我对如何对结果进行编码的主要关注点是关于结果的浏览器处理.我读过的内容表明,特别是在使用JSONP时,浏览器可能对编码很敏感.我没有找到关于这个主题的任何非常好的信息,所以我将不得不开始做一些测试,看看会发生什么.理想情况下,我只想逃避所需的几个字符,只需对utf-8进行编码即可.
我需要解析一些HTML文件,但是,它们格式不正确并且PHP打印出警告.我想以编程方式避免这种调试/警告行为.请指教.谢谢!
码:
// create a DOM document and load the HTML data
$xmlDoc = new DomDocument;
// this dumps out the warnings
$xmlDoc->loadHTML($fetchResult);
Run Code Online (Sandbox Code Playgroud)
这个:
@$xmlDoc->loadHTML($fetchResult)
Run Code Online (Sandbox Code Playgroud)
可以抑制警告,但我如何以编程方式捕获这些警告?
是否有任何SQL子查询语法允许您从字面上定义临时表?
例如,像
SELECT
MAX(count) AS max,
COUNT(*) AS count
FROM
(
(1 AS id, 7 AS count),
(2, 6),
(3, 13),
(4, 12),
(5, 9)
) AS mytable
INNER JOIN someothertable ON someothertable.id=mytable.id
Run Code Online (Sandbox Code Playgroud)
这将节省必须执行两个或三个查询:创建临时表,将数据放入其中,然后在连接中使用它.
我正在使用MySQL,但会对其他可以做类似事情的数据库感兴趣.
我使用PHP levenshtein函数比较字符串有一些成功.
但是,对于包含已交换位置的子串的两个字符串,算法会将这些字符串计为全新的子字符串.
例如:
levenshtein("The quick brown fox", "brown quick The fox"); // 10 differences
Run Code Online (Sandbox Code Playgroud)
被视为没有共同点:
levenshtein("The quick brown fox", "The quiet swine flu"); // 9 differences
Run Code Online (Sandbox Code Playgroud)
我更喜欢一种算法,它看到前两个更相似.
我怎么能想出一个比较函数,它可以识别将位置切换为与编辑不同的子串?
我想到的一种可能的方法是在比较之前将字符串中的所有单词按字母顺序排列.这使得单词的原始顺序完全脱离了比较.然而,这样做的一个缺点是,只更改一个单词的第一个字母可能会造成比单个字母更改所造成的更大的中断.
我想要实现的是比较两个关于自由文本字符串的人的事实,并决定这些事实表明相同事实的可能性.事实可能是有人上学的学校,例如雇主或出版商的名字.两个记录可能有相同的学校拼写不同,单词的顺序不同,额外的单词等,所以如果我们要好好猜测他们指的是同一所学校,那么匹配必须有些模糊.到目前为止,它在拼写错误方面表现得非常好(我使用的是一种类似于metaphone的phoenetic算法),但是如果你改变学校中常见的单词顺序则非常糟糕:"xxx college"vs "xxx学院".
在PHP中,我已经error_reporting开始报告包括通知在内的所有内容.
为什么以下内容不会抛出任何通知,错误或其他任何内容?
$myarray = null;
$myvalue = $myarray['banana'];
Run Code Online (Sandbox Code Playgroud)
故障排除步骤
$myarray = array();
$myvalue = $myarray['banana'];
// throws a notice, as expected ?
$myarray = (array)null;
$myvalue = $myarray['banana'];
// throws a notice, as expected ?
$myarray = null;
$myvalue = $myarray['banana'];
// no notice or warning thrown, $myvalue is now NULL. ? Why?
Run Code Online (Sandbox Code Playgroud)
它可能是PHP中的一个错误,或者我只是不了解它是如何工作的.
可能重复:
修复PHP空函数
在PHP中,empty()是一个很好的快捷方式,因为它允许您检查变量是否定义而不是同时为空.
当你不希望"0"(作为一个字符串)被认为是空的时,你会使用什么,但你仍然想要假,空,0和""被视为空?
也就是说,我只是想知道你是否有自己的快捷方式:
if (isset($myvariable) && $myvariable != "") ;// do something
if (isset($othervar ) && $othervar != "") ;// do something
if (isset($anothervar) && $anothervar != "") ;// do something
// and so on, and so on
Run Code Online (Sandbox Code Playgroud)
我不认为我可以为此定义辅助函数,因为变量可能是未定义的(因此不能作为参数传递).
我的PHP应用程序有一个可以导入记录的导入脚本.
目前,它是从CSV文件导入的.它正在读取CSV文件的每一行,使用fgetcsv一次一行,并且对于每一行,它在该记录上进行大量处理,包括数据库查询,然后继续下一行.它不应该继续累积更多的内存.
在导入大约2500条记录之后,PHP死了,说它已超过其内存限制(132 MB左右).
CSV文件本身只有几个megs - 发生的其他处理会进行大量的字符串比较,差异等.我有大量的代码在运行它并且很难想出一个'最小的再现样品'.
找到并解决这个问题有哪些好方法?
发现问题的原因
我有一个调试类,它在运行时记录我的所有数据库查询.因此,那些长约30KB的SQL字符串留在内存中.我意识到这不适合设计为长时间运行的脚本.
可能还有其他内存泄漏源,但我很确定这是我的问题的原因.
我已经安装了SPDY Indicator chrome扩展.它正在检测某些站点启用SPDY,而某些站点启用HTTP/2.
哪些是当前支持HTTP/2的Web服务器?我知道nginx支持SPDY,但是它支持HTTP/2吗?如果是,我该如何启用它?
感谢GolezTrol. 答案是不. 是截至2015年9月
以下列表已过期,可能不值得维护.
我希望能够识别给定的DOM节点是否已经附加/插入到另一个节点,或者它是否是document.createElement()或类似的新节点,并且没有被放置在任何地方.
在大多数浏览器中,只需检查parentNode即可.
if (!node.parentNode) {
// this node is not part of a larger document
}
Run Code Online (Sandbox Code Playgroud)
但是,在Internet Explorer中,似乎新元素,即使在使用document.createElement()创建后,也已经有了一个parentNode对象(类型为DispHTMLDocument ??).
还有其他很好的跨浏览器和可靠的方式吗?
编辑:看起来Internet Explorer隐式创建DocumentFragment(nodeType为11)并将其设置为节点的parentNode属性.
如何使用CSS3制作内边框?
也就是说,它不是从元素的活动/填充区域向外延伸的边界,而是向内延伸,与其内容重叠?
如果可以用最少的CSS规则完成,我会很感激,如果可能的话.
php ×5
algorithm ×1
arrays ×1
css ×1
css3 ×1
dom ×1
domdocument ×1
html ×1
http2 ×1
javascript ×1
json ×1
memory-leaks ×1
mysql ×1
nginx ×1
null ×1
similarity ×1
sql ×1
subquery ×1
temp-tables ×1
unicode ×1
utf-8 ×1
warnings ×1
web-services ×1