在深入研究一些旧代码时,我偶然发现了一个用于preg_replace非常过分地清理特殊字符的函数.不幸的是,没有办法避免这种清理,混乱的数据从外部传来.
/* Example 1: current code */
$item = preg_replace('/' . chr(196) . '/',chr(142),$item);
$item = preg_replace('/' . chr(214) . '/',chr(153),$item);
$item = preg_replace('/' . chr(220) . '/',chr(154),$item);
Run Code Online (Sandbox Code Playgroud)
很多那些线都在那里,并且都做同样的事情(使用不同的字符),所以应该有更好的方法来做到这一点.我优化这个的第一个迭代是使用索引数组,如下所示:
/* Example 2: slightly optimized code */
$patterns = array();
$patterns[0] = '/'.chr(196).'/';
$patterns[1] = '/'.chr(214).'/';
$patterns[2] = '/'.chr(220).'/';
$reps = array();
$reps[0] = chr(142);
$reps[1] = chr(153);
$reps[2] = chr(154);
$item = preg_replace($patterns,$reps,$item);
Run Code Online (Sandbox Code Playgroud)
它完成了这项工作,但我想有一个更好和/或更快的方式来做这个更容易和更聪明 - 甚至可能没有preg_replace.由于清晨和/或缺乏好咖啡,我到目前为止无法找到它.
有什么建议?
也许是因为今天是星期五,我只是想的没那么直,但是我希望(并且正在尝试得到)以下查询输出所有用户,NULL如果没有时间表,则在EndDate列中使用。相反,我只会得到具有时间表的用户。
SELECT Users.Name, Timesheets.EndDate
FROM Users
LEFT OUTER JOIN
Timesheets ON Users.idUser = Timesheets.id_User
WHERE (Timesheets.EndDate = CONVERT(DATETIME, '2014-08-15 00:00:00', 102))
Run Code Online (Sandbox Code Playgroud)
最终目标是找到在给定时间内尚未创建时间表的所有用户。
我试图使用左连接从两个不同的表中总计一个数量.无论第二个表是否匹配,我都需要返回所有行.
SELECT l.tender,
l.starting+SUM(t.amount) AS 'amount'
FROM label l
LEFT JOIN transfers t on l.tender=t.name
ORDER BY l.tender
Run Code Online (Sandbox Code Playgroud) 我这里有两个问题:
我知道C++创建的EXE文件运行速度比VB快得多,但为什么呢?编译后不都变成机器码了吗?
如果C++被编译成机器代码,为什么它依赖于操作系统。例如,为什么不能在 Linux 上运行编译后的输出?如果它与库(如 stdio.h)有关,它们不是也会转换为机器语言吗?
我有一个样本
<h3>How to elasticity of the char length in javascript or css<h3>
<h3>How to elasticity<h3>
Run Code Online (Sandbox Code Playgroud)
如果字符串很长,如何配置字符串的大小
<h3>How to elasticity of ...<h3>
<h3>How to elasticity<h3>
Run Code Online (Sandbox Code Playgroud)
怎么样这个想法