使用PHP,给定URL,我如何确定它是否是图像?
URL没有上下文 - 它只是在纯文本文件的中间,或者可能只是一个字符串.
我不希望高开销(例如,读取URL的内容),因为可以在页面上调用许多URL.鉴于这种限制,所有图像都不是必需的,但我想要一个相当不错的猜测.
目前我只是在查看文件扩展名,但感觉应该有比这更好的方法.
这是我目前拥有的:
function isImage( $url )
{
$pos = strrpos( $url, ".");
if ($pos === false)
return false;
$ext = strtolower(trim(substr( $url, $pos)));
$imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case...
if ( in_array($ext, $imgExts) )
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果它对其他任何人有用,最后的功能是使用Emil H的答案:
function isImage($url)
{
$params = array('http' => array(
'method' => 'HEAD'
));
$ctx = stream_context_create($params);
$fp = …Run Code Online (Sandbox Code Playgroud) 给定一组字符串,例如:
EFgreen
EFgrey
EntireS1
EntireS2
J27RedP1
J27GreenP1
J27RedP2
J27GreenP2
JournalP1Black
JournalP1Blue
JournalP1Green
JournalP1Red
JournalP2Black
JournalP2Blue
JournalP2Green
Run Code Online (Sandbox Code Playgroud)
我希望能够检测到这些是三组文件:
有没有任何已知的方法来解决这个问题 - 我可以阅读任何已发表的论文吗?
我正在考虑的方法是每个字符串查看所有其他字符串并查找常见字符和不同字符的位置,尝试查找最常见的字符串集,但我担心这不是非常有效并且可能会给出误报.
请注意,这与"如何检测文件名中的常见字符串组"不同,因为它假定字符串后面始终有一系列数字.
我参与了很多项目,每个项目都有自己的源代码控制提供商.有没有办法配置Visual Studio 2010以基于每个项目自动选择正确的源代码控制?或者是每个用户级别的Tools - Options - Source Control插件?
让我澄清一下发生了什么.我有一个使用Vault的项目.当我打开它时,VS将Source Control设置为Vault.然后我关闭项目(解决方案)并打开另一个使用Mercurial(VisualHG)的解决方案我检查源控件插件并且仍然选择了Vault.为什么?是否可以自动选择正确的源控件?
-Wshadow将"当局部变量影响另一个局部变量时发出警告." Visual C++(2008)中是否存在等价物?我试过/ W4但它没有接受它.我也试过Cppcheck,但也没看到.
例如,如果我无意中做了:
class A
{
private:
int memberVar;
public:
void fn()
{
int memberVar = 27;
}
};
Run Code Online (Sandbox Code Playgroud)
我真的很想知道它!
当然这有可能吗?我一直在寻找PyQt教程和文档,但无法找到它的答案.可能我只需要用不同的方式来表达我的搜索查询.
[编辑]
感谢PEZ的答案 - 更多细节,包括在Win32第20章的Python编程中使用.pyw扩展
这对我来说似乎很吵.五行开销太多了.
m_Lock.EnterReadLock()
Try
Return m_List.Count
Finally
m_Lock.ExitReadLock()
End Try
Run Code Online (Sandbox Code Playgroud)
那你怎么这么简单呢?
我工作的项目中的一些开发人员习惯于评论他们的代码以显示其添加的产品版本,例如
// added for superEnterpriseyWonder v2.5
string superMappingTag = MakeTag(extras);
if (superMappingTag.empty())
{
autoMapping = false;
}
// end added for superEnterpriseyWonder v2.5
Run Code Online (Sandbox Code Playgroud)
每当我看到这个,我的血压升高,我必须花5分钟浏览SO来冷却.在我看来,他们不理解版本控制,如果我使用这种做法,源文件中的每一行都会是关于何时添加内容的评论.我正在考虑从我工作的文件中删除所有这些评论,但我想知道这只是我挑剔而且这些评论真的有些价值吗?
鉴于:
def test_to_check_exception_is_thrown(self):
# Arrange
c = Class()
# Act and Assert
self.assertRaises(NameError, c.do_something)
Run Code Online (Sandbox Code Playgroud)
如果do_something抛出异常则测试通过.
但是我有一个属性,当我替换时c.do_something,c.name = "Name"我得到一个关于我的测试模块没有被导入的错误,Eclipse突出显示了等号.
如何测试属性会引发异常?
编辑:
setattr并且getattr是新的我.在这种情况下,他们肯定有所帮助,谢谢.
xargs擅长插入初始参数:
seq 0 10 | xargs -n 3 echo foo
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
foo 0 1 2
foo 3 4 5
foo 6 7 8
foo 9 10
Run Code Online (Sandbox Code Playgroud)
当我还想要尾随参数时该怎么办?也就是说,什么命令:
seq 0 10 | xargs -n 3 <WHAT GOES HERE?>
Run Code Online (Sandbox Code Playgroud)
将产生以下期望的输出:
foo 0 1 2 bar
foo 3 4 5 bar
foo 6 7 8 bar
foo 9 10 bar
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
seq 0 10 | xargs -n 3 -I {} echo foo {} bar
Run Code Online (Sandbox Code Playgroud)
这几乎是正确的,除了它显然在每个命令行中强制使用一项,这不是我想要的:
foo 0 bar
foo 1 bar
foo 2 …Run Code Online (Sandbox Code Playgroud) c++ ×2
python ×2
.net ×1
algorithm ×1
c# ×1
command-line ×1
comments ×1
image ×1
ironpython ×1
map ×1
php ×1
properties ×1
pyqt ×1
stdmap ×1
stl ×1
unit-testing ×1
url ×1
vb.net ×1
visual-c++ ×1
windows ×1
xargs ×1