我正在使用a DOMDocument,我想知道是否存在使用类似CSS的选择器来选择节点的方法,就像我们在jQuery中一样.
示例情况:我正在解析XML文件,其中一个片段如下所示:
<gesmes:Envelope>
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time="2009-07-13">
<Cube currency="USD" rate="1.3975"/>
<Cube currency="JPY" rate="129.03"/>
<Cube currency="BGN" rate="1.9558"/>
<Cube currency="CZK" rate="26.028"/>
</Cube>
</Cube>
</gesmes:Envelope>
Run Code Online (Sandbox Code Playgroud)
使用类似jQuery的选择器访问此结构将非常简单.例如,我可以使用
$("Cube[currency]")
Run Code Online (Sandbox Code Playgroud)
Cube使用'currency'属性检索所有元素.
但是我怎么能用PHP做同样的事情DOMDocument呢?我想选择具有属性或具有特定属性值的元素.
我不明白Postgresql(9.2)如何计算列大小(以kb为单位),我有这样的表:
Table d2:
Column | Type |
---------+---------------|
id | serial |
n | numeric(17,2) |
Table d4:
Column | Type |
---------+---------------|
id | serial |
n | numeric(19,4) |
Table d18:
Column | Type |
---------+---------------|
id | serial |
n | numeric(35,18)|
Table b1:
Column | Type |
---------+---------------|
id | serial |
n | numeric(16,2) |
Table b2:
Column | Type |
---------+---------------|
id | serial |
n | numeric(4,2) |
Run Code Online (Sandbox Code Playgroud)
我用这个代码填充它们,以便每个表有10000行;
$tests = array(2, 4, …Run Code Online (Sandbox Code Playgroud) 时间过去了,但有些事情正在发生变化(欧洲):我的一位朋友向我展示了这个:http://project.irail.be/ Atm它只适用于比利时.
我想知道是否有任何在线服务提供关于列车时刻表(到达,离开,蚀刻......)的API,至少对于欧洲电台而言.
我知道www.bahn.de,他为许多欧洲国家提供了精确的时间表,但我没有发现任何与api服务相似的时间表.
我的目标(好吧,只是一个未来的项目)是开发一个像gmaps这样的应用程序,但是我没有给出汽车旅行,而是想给火车旅行...你知道,用户设定了出发日期,时间和站,然后第一次到达,然后可能再添加另一个,依此类推.
那么,有什么类似的,可以通过php/python/javascript查询?
编辑:如果可以帮助,我想知道建立一个服务来计划一个铁路之旅!(任何帮助都会非常感激)
我卡住了.谷歌的公共服务API依赖于每个本地公司提供的信息,许多分支机构都缺失(例如,几乎不可能用它来建立一个触及欧洲两个或更多地区的行程.正如我之前所说的,唯一的我知道做得很好的服务是bahn.de,他们确实拥有所有数据..但没有api.我试图解析他们的结果页面(为了将它们用作API),但似乎标记已经构建完全是为了避免这种情况......也许他们有商业计划背后或其他什么,但我不认为他们会发布一些API ..所以,我的项目正在进行没有这个功能(ps:我的项目是关于非营利文化组织,我们不会向任何人发动战争; P)
@El Goorf:如果你找到方法,并考虑分享它的想法,如果需要帮助,请指望我的手!
查看Kohana文档,我发现这非常有用,它们用于使用点表示法从多维数组中获取值,例如:
$foo = array('bar' => array('color' => 'green', 'size' => 'M'));
$value = path($foo, 'bar.color', NULL , '.');
// $value now is 'green'
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法以相同的方式设置数组值:
set_value($foo, 'bar.color', 'black');
Run Code Online (Sandbox Code Playgroud)
我发现这样做的唯一方法是重新构建数组表示法($ array ['bar'] ['color'])然后设置值..使用eval.
有什么想法避免评估?
我是PostgreSQL的新手,我已经遇到了第一个问题..
我按照手动分步编写了一些代码来了解事务的工作原理.
为了简短起见,我创建了2个表,用户和移动:第一个是名称,电子邮件和信用列,第二个是from,to,import.
所以,我是这样尝试的:
BEGIN;
INSERT INTO movements (from, to, import) VALUES ('mary', 'steve', 600);
UPDATE users SET credit = credit - 600 WHERE name = 'mary';
UPDATE users SET credit = credit + 600 WHERE name = 'steve';
--here comes the problem!
IF (SELECT credit FROM users WHERE name = 'mary') < 0 THEN
ROLLBACK;
END IF
COMMIT;
Run Code Online (Sandbox Code Playgroud)
我总是得到错误:
错误:"IF"处或附近的语法错误
我哪里弄错了?
PS:不要专注于示例功能,这只是我理解交易的试验......现在,IF条款......
我有一个LAPP(linux,apache,postgresql和php)环境,但问题在Postgres或Mysql上都是一样的.
我有一个开发的cms应用程序,它处理客户端,文档(估计,发票等)和其他数据,在1个postgres DB中构建,包含许多模式(每个客户使用该应用程序一个); 让我们假设大约200个模式,每个模式同时由15个人使用(平均).
编辑:我在每个表上都有一个名为last_update的时间戳字段,以及每次更新行时更新时间戳的触发器.
情况是:
我想要的情况:
我想知道用ajax来做这件事; 只需使用带有文档ID和最后更新时间戳的隐藏字段,每隔5秒检查最后更新的时间是否相同,什么也不做,否则,显示警告对话框.
因此,页面check-last-update.php应该类似于:
<?php
//[connect to db, postgres or mysql]
$documentId = isset($_POST['document-id']) ? $_POST['document-id'] : 0;
$lastUpdateTime = isset($_POST['last-update-time']) ? $_POST['last-update-time'] : 0;
//in the real life i sanitize the data and use prepared statements;
$qr = pg_query("
SELECT
last_update_time
FROM
documents
WHERE
id = '$documentId'
");
$ray = pg_fetch_assoc($qr);
if($ray['last_update_time'] > $lastUpdateTime){
//someone else updated the document …Run Code Online (Sandbox Code Playgroud) 我开发了一个Web应用程序,允许我的用户在LAMP环境中动态管理网站的某些方面(是的,某种cms)(debian,apache,php,mysql)
好吧,例如,他们在我的服务器上的私人区域创建新闻,然后通过cURL请求(或通过ajax)在他们的网站上发布.
这个消息是用WYSIWYG编辑器创建的(fck at moment,可能是未来的tinyMCE).
所以,我不能禁止html标签,但我怎么能安全?我必须删除什么样的标签(javascripts?)?这意味着服务器安全..但如何"合法"安全?如果用户使用我的应用程序制作xss,我可以遇到一些法律问题吗?
根据php手册:
<?php
$a =& $b;
?>
// Note:
// $a and $b are completely equal here. $a is not pointing to $b or vice versa.
// $a and $b are pointing to the same place.
Run Code Online (Sandbox Code Playgroud)
我认为:
<?php
$x = "something";
$y = $x;
$z = $x;
Run Code Online (Sandbox Code Playgroud)
应该消耗更多的内存:
<?php
$x = "something";
$y =& $x;
$z =& $x;
Run Code Online (Sandbox Code Playgroud)
因为,如果我理解是正确的,在我们的第一种情况下"复制"的值something,并把它分配给$y和$z具有在端部3级的变量和3页的内容,而在第二种情况下,我们有3个变量pointing相同的内容.
所以,使用如下代码:
$value = "put something here, like a long lorem ipsum";
for($i …Run Code Online (Sandbox Code Playgroud) 我必须在购物车中添加一些自定义金额的订单项.商品保存,价格= 0,我的模块计算价格并将订单项添加到购物车/订单,但我不明白如何以编程方式设置价格.
我已经阅读了有关使用规则的内容,但我需要我的模块才能设置/更改价格,而无需调用规则.
我尝试使用实体包装器,我尝试更改使用commerce_product_line_item_new()创建的订单项,但什么都没有,当订单项进入购物车时始终具有原始产品价格(在我的情况下为0).
如何以编程方式更改订单项价格?
到目前为止我的代码看起来像:
// For debugging, this function is called by hook_menu()
function mymodule_test($product_id)
{
global $user;
$user = user_load($user->uid);
$order = commerce_cart_order_load($user->uid);
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$product = commerce_product_load($product_id);
$line_item = commerce_product_line_item_new(
$product,
1,
0,
array(
),
'cover'
);
$line_item_wrapper = entity_metadata_wrapper("commerce_line_item", $line_item);
$line_item_wrapper->commerce_unit_price->data = commerce_price_component_add(
$line_item_wrapper->commerce_unit_price->value(),
'base_price',
array(
'amount' => 1234,
'currency_code' => 'EUR',
'data' => array(),
),
TRUE
);
$insert_line_item = commerce_cart_product_add($user->uid, $line_item_wrapper->value(), FALSE);
return 'done';
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我尝试调整在commerce/modules/line_item/commerce_line_item.rules.inc中找到的commerce_line_item_unit_price_amount()的代码,但是这个测试:
<?php
global $user;
$product …Run Code Online (Sandbox Code Playgroud) 在我的上一个问题之后,我想了解何时优化确实值得开发人员花费时间.
是否值得花4个小时来查询速度提高20%?是的,不,也许,是的,如果......?
"浪费"7个小时将任务切换到另一种语言以节省大约40%的CPU使用量"值得"吗?
我对新项目的正常迭代是:
隐含着"编写好的,可维护的代码".
显然,大的"优化"部分发生在第2点,但通常在项目结束后审查代码时,我发现一些部分,即使他们做得好,也可以改进.这是第5点的基本原理.
为了给出最后一点的具体示例,一个简单的例子是当我期望90%的查询SELECT和10%的查询时INSERT/UPDATE,所以我对带有索引的数据库表收费.但是在6个月之后,我发现在现实生活中有10%的SELECT查询和90%的INSERT/UPDATEs,所以查询速度没有得到优化.这是第一个出现在我脑海中的例子(显然,对于最初的错误设计而言,这不仅仅是优化的"补丁").
请注意,我是一名开发人员,而不是商人 - 但我希望尽可能让我的客户尽可能地保持良心.
我的意思是,我知道如果我失去了50个小时来获得应用程序总速度的5%,并且该应用程序被10个用户使用,那么它可能不值得花时间......但它是什么时候它是什么时候?
您认为优化何时至关重要?
你通常使用什么公式,意识到优化所花费的时间(以及最终的收益)并不总是可以在纸上量化?
编辑:对不起,但我不能接受像"直到人们不抱怨id,不需要优化"这样的答案; 它可以是一个商业视图(可疑,imho),但不是开发人员或(imho)一个良好的答案.我知道,这个问题确实很主观.
我同意Cheeso,性能优化应推迟,对项目的真实使用情况和负载一些分析,但small'n'quick优化可以立刻后项目结束来完成.
谢谢大家 ;)
php ×6
postgresql ×3
javascript ×2
api ×1
arrays ×1
concurrency ×1
database ×1
dom ×1
drupal ×1
drupal-7 ×1
eval ×1
html ×1
if-statement ×1
jquery ×1
mysql ×1
optimization ×1
performance ×1
python ×1
reference ×1
security ×1
sql ×1
syntax ×1
variables ×1
xml ×1
xss ×1