如果我正在构建一个我希望移植到许多不同服务器的PHP系统,我应该避免依赖PHP 5的功能,例如异常和最终方法吗?PHP 5现在有多广泛?我应该担心兼容性和沟渠异常以及PHP 4中没有的其他功能吗?
我正在阅读"C编程语言"(第2版)并且在开头附近,它有这样的例子:
while((c = getchar()) != EOF)
if(c == '\n'){
++n1;
Run Code Online (Sandbox Code Playgroud)
我可以看到这在读取文件时如何工作,我理解这种语法......但这只是从控制台读取 - 当从控制台输入字符时,如何发出文件结束信号?我正在使用Windows XP ... MinGW编译器...无论如何,这本书是为waaay早期的系统编写的,有像EOF按钮之类的东西吗?
好吧,我还有一个问题,那就是文件结尾在Windows下如何运作.
如果我只是while(getchar()!=EOF);,那么我可以继续输入字符,直到我通过^ Z发出EOF信号.但是,我必须写一个换行符,然后点击^ Z,然后是另一个换行符...为什么它必须在它自己的行上?
到目前为止,我已经能够在C中创建一个窗口,并在该窗口中添加一个按钮和编辑框.但是,我在哪里可以找到所有表单控件的系统类的详尽列表?我不记得我在哪里找到了BUTTON和EDIT - 是否有标签?列表框?复选框?组合框?等等
然后,我将如何使用内置的Windows函数...我认为它们被称为常用控件?喜欢打开文件,另存为,打印等.
这很简单,但我正在整个目录列表(在PHP中dir()),并确保它们:
现在我有
function isValidFile($filename) {
$dirDotExpr = "/^\.{1,2}$/"; //matches against "." and ".."
$extExpr = "/\.(jpg|jpeg|gif|png)$/i"; //checks file extension
return (1
&& ! preg_match($dirDotExpr, $filename)
&& preg_match($extExpr, $filename)
)
}
Run Code Online (Sandbox Code Playgroud)
但是在一个正则表达式中完成所有操作会很好.但是,我不知道如何确保一件事情匹配,有一件事没有 - 我怎么能做到这一点?
目前,我有这条线:
$.post("submitmail.php", $("#contactform").serialize(), recvMailStatus);
Run Code Online (Sandbox Code Playgroud)
我是jQuery的新手,所以这可能是一个荒谬的愚蠢问题.
但是我正在使用或不使用javascript来使用这个项目,所以如果使用此函数提交表单,我希望submitmail.php只是回显它是否成功.如果表单刚提交并重定向到submitmail.php,我希望它显示除白色屏幕以外的其他内容,黑色文本说"邮件已成功发送".要做到这一点,我想我只是post一个额外的变量"fromjs"或其他东西,以便页面可以相应地渲染自己.最好的方法是什么?
我可以重置MySQL表的自动增量索引,以便它再次从零开始计数吗?
我删除了表中的所有行 - 如何重置该计数器?
据我所知,SimpleXMLElement只是一个其他SimpleXMLElements的数组,如果没有嵌套在另一个标签中的标签,还有一些常规数组值.
我在变量中有一个SimpleXMLElement $data,并var_dump($data)给我这个:
object(SimpleXMLElement)#1 (33) {
["buyer-accepts-marketing"]=>
string(4) "true"
...
...
Run Code Online (Sandbox Code Playgroud)
但是调用var_dump($data->buyer-accepts-marketing)给了我一个错误,并var_dump($data["buyer-accepts-marketing"])给了我NULL.通话var_dump($data->shipping-address->children())给我一个错误.
像这样:
foreach($data as $item) {
var_dump($item);
}
Run Code Online (Sandbox Code Playgroud)
给出了一大堆SimpleXMLElement对象,但奇怪的是,没有字符串或整数.
我在这里错过了什么?我想采取它的特定部分并将它们传递给一个函数,所以例如,我不必去
$data->billing-address->postal-code;
...
$data->shipping-address->postal-code;
...
Run Code Online (Sandbox Code Playgroud)
并且可以去
address($data->billing-address);
address($data->shipping-address);
Run Code Online (Sandbox Code Playgroud)
等等
我刚刚开始使用twisted.web,我在将Python模块导入.rpy脚本时遇到了麻烦.
在C:\py\twisted\mysite.py,我有这个:
from twisted.web.resource import Resource
from twisted.web import server
class MySite(Resource):
def render_GET(self, request):
request.write("<!DOCTYPE html>")
request.write("<html><head>")
request.write("<title>Twisted Driven Site</title>")
request.write("</head><body>")
request.write("<h1>Twisted Driven Website</h1>")
request.write("<p>Prepath: <pre>{0}</pre></p>".format(request.prepath))
request.write("</body></html>")
request.finish()
return server.NOT_DONE_YET
Run Code Online (Sandbox Code Playgroud)
在C:\py\twisted\index.rpy,我有这个:
import mysite
reload(mysite)
resource = mysite.MySite()
Run Code Online (Sandbox Code Playgroud)
我twistd -n web --port 8888 --path C:\py\twisted在命令提示符下运行,服务器启动成功.但是当我请求时,localhost:8888我得到了一个源自ImportError的(巨大的)堆栈跟踪:
<type 'exceptions.ImportError'>: No module named mysite
我可以从解释器导入模块,如果我只是index.rpy作为python脚本执行,我不会得到导入错误.关于这个主题的文档有点模糊,它只是说"但是,在Python模块中定义Resource子类通常是一个更好的主意.为了使模块中的更改可见,您必须重新启动Python进程,或重新加载模块:"(从这里开始).
有谁知道这样做的正确方法?
我正在开发一个谷歌地图项目,您可以在其中向数据库添加地址,然后单击"地理编码这些地址"类型的按钮.然后它将带您到一个页面,告诉您它是多么成功.
但是,如果谷歌无法识别地址,我希望顶部有这些地址的列表,文本框要么指定您自己的坐标,要么重新输入地址,然后尝试再次提交.当该表单提交(通过帖子)时,我希望能够获取任意数量的字段,从其值中构建列表,然后将其重新发送给Google(如果地址已更改),或者添加它们将他们的自定义坐标放入数据库.
那么,我如何提交和处理任意数量的POST字段?有没有办法像C(或类似语言)中的argc/argv一样使用它?