采用包含PHP样式变量的纯文本(不是PHP代码),然后替换变量值的最佳方法是什么.这有点难以描述,所以这是一个例子.
// -- myFile.txt --
Mary had a little $pet.
// -- parser.php --
$pet = "lamb";
// open myFile.txt and transform it such that...
$newContents = "Mary had a little lamb.";
Run Code Online (Sandbox Code Playgroud)
我一直在考虑使用正则表达式,或者也许eval(),虽然我不确定哪个最简单.这个脚本只会在本地运行,因此对安全问题的担忧eval()并不适用(我认为?).
我还要补充一点,我可以使用以下方法将所有必要的变量放入数组get_defined_vars():
$allVars = get_defined_vars();
echo $pet; // "lamb"
echo $allVars['pet']; // "lamb"
Run Code Online (Sandbox Code Playgroud) 我正在为我的网站添加一些功能,以便用户可以上传他们自己的个人资料图片,所以我想知道是将它们作为BLOB存储在数据库中,还是将它们放在文件系统中.
我在这里找到了一个类似的问题:在DB中存储图像:Yea或Nay,但给出的答案更倾向于人们期待数千甚至数百万的图像,而我更关心的是小图像(JPEG图像直到可能是150x150像素),而且数量很少:可能高达一两千.
对于这种情况,DB BLOB vs Filesystem有什么感受?客户端如何使用来自DB和文件系统的缓存映像?
如果存储在数据库中的BLOB是要走的路-有什么我应该知道哪里来存储它们?由于我想我的大多数用户都不会上传图片,我是否应该在需要时创建一个user_pics表(外部)连接到常规users表?
编辑:我正在重新打开这个问题,因为它与你链接的那两个不重复.这个问题具体是关于使用DB或FS来处理少量图像的优缺点.正如我上面所说,另一个问题是针对需要存储数千个大图像的人.
我最近一直在查看一些服务器日志tail -f,并且认为如果我可以格式化输出,那么看起来要容易得多.真正我正在寻找的是一种可能为某些单词着色的方法(由正则表达式确定),并且可能删除某些单词(再次由正则表达式确定).
标签上alt属性的预期用途到底是什么<img>?
它应该描述图像,还是应该为屏幕阅读器(以及关闭图像的人)提供有意义的替换文本?
例如,如果我在我的网站上有一个人的简短传记,并且包含一张他们的小照片,那么视觉障碍用户是否真的有意义地向他们宣读"约翰史密斯的照片"?
在我写的一个特定脚本中,我有许多链接到某些DOM元素的对象.假设每个元素都有唯一的id,每个对象应该只保留元素的id(并且每次都使用document.getElementById),还是将元素存储在属性中?
这是我的意思的简化示例:
function myThing(elId) {
this.elId = elId;
}
myThing.prototype.getElValue = function() {
return document.getElementById(this.elId).nodeValue;
};
// -- vs -- //
function myThing(elId) {
this.el = document.getElementById(elId);
}
mything.prototype.getElValue = function() {
return this.el.nodeValue;
};
Run Code Online (Sandbox Code Playgroud)
它有什么不同吗?我应该知道有任何性能问题吗?
在我的网页上,我有这个CSS:
tr:hover {
background-color: #f0f;
}
Run Code Online (Sandbox Code Playgroud)
除了好的旧IE之外,它在所有浏览器中都能很好地工作.我知道我可以写一些jQuery来添加和删除鼠标上/下的一个类,但我不想让所有其他支持:hover正确的浏览器出现问题- 所以我只想应用这个浏览器的JS行为本身不支持纯CSS解决方案.
当然,我们都知道这$.browser已被弃用了,而且我们都知道浏览器嗅探是一件坏事,SO上的所有其他问题都有大量的答案,就像"你不应该检查浏览器,检查为特征 ",而这一切都很好,当这些人生活的神奇仙境,但我们其他人需要得到我们的网站工作,看着对面IE6和其他浏览器确定.
$.support IE6和7看起来像这样:
leadingWhitespace: false
tbody: false
objectAll: false
htmlSerialize: false
style: false
hrefNormalized: false
opacity: false
cssFloat: false
scriptEval: false
noCloneEvent: false
boxModel: true
Run Code Online (Sandbox Code Playgroud)
我到底该如何使用这些属性来确定是否tr:hover有效?
是的我知道在这个例子中,它是相当无害的,我可能可以通过不向IE用户提供该功能,或者通过在所有浏览器中模拟它来逃避,但这不是重点.$.browser当你$.support没有接近替换它时,你应该如何停止使用?
这是我的页面的基本HTML结构:
<div id="selectedItemsTop">
<ul>
<li>
Root element
<ul>
<li>Level One a</li>
<li>Level One b</li>
<li>
Level One parent
<ul>
<li>Level Two a</li>
<li>
Level Two parent
<ul>
<li>Level Three a</li>
<li>Level Three b</li>
</ul>
</li>
<li>Level Two b</li>
</ul>
</li>
<li>Level One c</li>
</ul>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
例如:
在每个缩进级别可以有超过根的任意数量的项目,但是每个级别只有3个级别,并且每个级别只有一个父级(即:<ul>根目录下总是正好3 秒,但是<li>s 的数量是可变的) .
我允许用户使用jQuery UI Sortable插件重新排序此结构.要添加新项目,有三组项目(第一级项目,第二级项目,第3级项目),它们位于此树的页面上.用户可以从那里拖动到列表中来添加它 - 但必须在相应级别添加它.
我有这个工作已经在使用draggable与该connectToSortable选项:
$('ul.availableItems').each(function(i) {
var selector …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本,该脚本使用这些pcntl_*函数创建了许多分叉的子进程.
基本上,有一个脚本在循环中运行大约一分钟,定期轮询数据库以查看是否有要运行的任务.如果有一个,它应该在一个单独的进程中分叉并运行该任务,以便父进程不会被长时间运行的任务阻止.
由于可能有大量任务准备好运行,我想限制创建的子进程数.因此,我通过在每次创建变量时递增变量来跟踪进程数(然后暂停,如果有太多),然后在信号处理程序中递减它.有点像这样:
define(ticks = 1);
$openProcesses = 0; // how many we have open
$max = 3; // the most we want open at a time
pcntl_signal(SIGCHLD, "childFinished");
while (!time_is_up()) {
if (there_is_something_to_do()) {
$pid = pcntl_fork();
if (!$pid) { // I am the child
foo(); // run the long-running task
exit(0); // and exit
} else { // I am the parent
++$openProcesses;
if ($openProcesses >= $max) {
pcntl_wait($status); // wait for any child to …Run Code Online (Sandbox Code Playgroud) 如何访问包含文件中定义的变量?
# inc.rb
foo = "bar";
# main.rb
require 'inc.rb'
puts foo
# NameError: undefined local variable or method `foo' for main:Object
Run Code Online (Sandbox Code Playgroud) 我正在尝试向我的gitconfig文件添加别名命令,并在我添加的行上报告"错误的配置文件".我怀疑它与sed命令和一些逃避问题有关,但我不确切知道它应该是什么.这是命令,为易读性添加了换行符:
impact = !git ls-files -z
| xargs -0n1 git blame -w -C
| sed -r 's/^[^(]+\((.*) [0-9]{4}-.*/\1/'
| sed -r 's/ +$//'
| sort -f
| uniq -c
| sort -nr
Run Code Online (Sandbox Code Playgroud)