小编Ste*_*rig的帖子

在SimpleXML for PHP中删除具有特定属性的子项

我有几个具有不同属性的相同元素,我正在使用SimpleXML访问:

<data>
    <seg id="A1"/>
    <seg id="A5"/>
    <seg id="A12"/>
    <seg id="A29"/>
    <seg id="A30"/>
</data>
Run Code Online (Sandbox Code Playgroud)

我需要删除id为"A12" 的特定seg元素,我该怎么做?我已经尝试循环遍历seg元素并取消设置特定元素,但这不起作用,元素仍然存在.

foreach($doc->seg as $seg)
{
    if($seg['id'] == 'A12')
    {
        unset($seg);
    }
}
Run Code Online (Sandbox Code Playgroud)

php xml dom simplexml

48
推荐指数
5
解决办法
10万
查看次数

使用PHP连接到受WS-Security保护的Web服务

我正在尝试连接到受密码保护且网址为https的Web服务.在脚本发出请求之前,我无法弄清楚如何进行身份验证.它似乎在我定义服务时立即发出请求.例如,如果我投入:

$client = new SoapClient("https://example.com/WSDL/nameofservice",
       array('trace' => 1,)
);
Run Code Online (Sandbox Code Playgroud)

然后在浏览器上访问该站点,我得到:

Fatal error: Uncaught SoapFault exception: 
[WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from
'https://example.com/WSDL/nameofservice' in /path/to/my/script/myscript.php:2 
Stack trace: #0 /path/to/my/script/myscript.php(2): 
SoapClient->SoapClient('https://example...', Array) #1 {main} thrown in 
/path/to/my/script/myscript.php on line 2
Run Code Online (Sandbox Code Playgroud)

如果我尝试将服务定义为Soap服务器,例如:

$server= new SoapServer("https://example.com/WSDL/nameofservice");
Run Code Online (Sandbox Code Playgroud)

我明白了:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>WSDL</faultcode>
<faultstring>
SOAP-ERROR: Parsing WSDL: 
Couldn't load from 'https://example.com/WSDL/nameofservice'
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我还没有尝试发送原始请求信封,看看服务器返回什么,但这可能是一种解决方法.但是我希望有人可以告诉我如何使用php内置类来设置它.我尝试将"userName"和"password"添加到数组中,但这并不好.问题是我甚至无法判断我是否到达了远程站点,更不用说它是否拒绝了请求.

php ws-security soap web-services

31
推荐指数
4
解决办法
7万
查看次数

如何对UTF-8字符串数组进行排序?

我currentyl对如何在PHP中对包含UTF-8编码字符串的数组进行排序没有任何线索.该阵列来自LDAP服务器,因此通过数据库排序(没有问题)是没有解决方案.以下不适用于我的Windows开发机器(虽然我认为这至少应该是一个可能的解决方案):

$array=array('Birnen', 'Äpfel', 'Ungetüme', 'Apfel', 'Ungetiere', 'Österreich');
$oldLocal=setlocale(LC_COLLATE, "0");
var_dump(setlocale(LC_COLLATE, 'German_Germany.65001'));
usort($array, 'strcoll');
var_dump(setlocale(LC_COLLATE, $oldLocal));
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

输出是:

string(20) "German_Germany.65001"
string(1) "C"
array(6) {
  [0]=>
  string(6) "Birnen"
  [1]=>
  string(9) "Ungetiere"
  [2]=>
  string(6) "Äpfel"
  [3]=>
  string(5) "Apfel"
  [4]=>
  string(9) "Ungetüme"
  [5]=>
  string(11) "Österreich"
}
Run Code Online (Sandbox Code Playgroud)

这完全是胡说八道.使用1252作为代码页setlocale()给出了另一个输出,但仍然是一个明显错误的输出:

string(19) "German_Germany.1252"
string(1) "C"
array(6) {
  [0]=>
  string(11) "Österreich"
  [1]=>
  string(6) "Äpfel"
  [2]=>
  string(5) "Apfel"
  [3]=>
  string(6) "Birnen"
  [4]=>
  string(9) "Ungetüme"
  [5]=>
  string(9) "Ungetiere"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用UTF-8字符串区域设置识别数组?

刚才注意到这似乎是PHP上的问题,因为de_DE.utf8用作locale 的相同代码段可以在Linux机器上运行.不过,这个特定于Windows的问题的解决方案会很好......

php arrays sorting utf-8

26
推荐指数
3
解决办法
3万
查看次数

PHP by-reference参数和默认null

假设我们有一个类似的方法签名

public static function explodeDn($dn, array &$keys = null, array &$vals = null,
    $caseFold = self::ATTR_CASEFOLD_NONE)
Run Code Online (Sandbox Code Playgroud)

我们可以通过以下方式省略所有参数来轻松调用该方法$dn:

$dn=Zend_Ldap_Dn::explodeDn('CN=Alice Baker,CN=Users,DC=example,DC=com');
Run Code Online (Sandbox Code Playgroud)

我们也可以用3个参数调用该方法:

$dn=Zend_Ldap_Dn::explodeDn('CN=Alice Baker,CN=Users,DC=example,DC=com', $k, $v);
Run Code Online (Sandbox Code Playgroud)

并有4个参数:

$dn=Zend_Ldap_Dn::explodeDn('CN=Alice Baker,CN=Users,DC=example,DC=com', $k, $v, 
    Zend_Ldap_Dn::ATTR_CASEFOLD_UPPER);
Run Code Online (Sandbox Code Playgroud)

但是为什么不可能使用以下参数组合调用该方法,例如:

$dn=Zend_Ldap_Dn::explodeDn('CN=Alice Baker,CN=Users,DC=example,DC=com', $k, null, 
    Zend_Ldap_Dn::ATTR_CASEFOLD_UPPER);
$dn=Zend_Ldap_Dn::explodeDn('CN=Alice Baker,CN=Users,DC=example,DC=com', null, $v);
Run Code Online (Sandbox Code Playgroud)

传递null给方法和依赖默认值之间有什么区别?这个约束是否写在手册中?它可以被规避吗?

php null pass-by-reference

13
推荐指数
3
解决办法
1万
查看次数

Zend Auth和ACL

我希望有些人可以帮助我一点点,我目前正在使用PHP框架开发我的第一个站点,该站点的一部分溢出到成员区域,这是我的混乱开始浮出水面,我想要的成员区域正常成员能够添加新评论并编辑自己的评论,简单到我可以根据会话中存储的用户名检查海报名称,我的困惑是区分"普通"用户和更高级别用户谁有能力删除和修改任何评论等,他们也应该能够访问该网站的管理部分.

我的问题是,所有用户都应该通过相同的Zend_Auth控制器登录,还是应该为每种类型的用户使用Zend_Auth分离控制器,还是可以使用Zend_Acl处理所有这些?任何帮助,建议,文章或教程都将非常感激.就个人而言,我认为Zend文档在某些类上有点原始.

提前致谢

sico87

php authentication zend-framework login

11
推荐指数
3
解决办法
2万
查看次数

为什么我的Perl测试会因`use encoding'utf8'而失败?

我对这个测试脚本感到困惑:

#!perl

use strict;
use warnings;
use encoding 'utf8';
use Test::More 'no_plan';

ok('áá' =~ m/á/, 'ok direct match');

my $re = qr{á};
ok('áá' =~ m/$re/, 'ok qr-based match');

like('áá', $re, 'like qr-based match');
Run Code Online (Sandbox Code Playgroud)

这三个测试都失败了,但是我期待use encoding 'utf8'将文字ááqr基于正则表达式的regexp 升级为utf8字符串,从而通过测试.

如果我删除了use encoding测试按预期传递的行,但我无法弄清楚为什么它们会在utf8模式下失败.

我在Mac OS X上使用perl 5.8.8(系统版).

testing perl utf-8

9
推荐指数
1
解决办法
2730
查看次数

单击父级时检查树的子节点[ExtJS]

我想知道如何在点击ExtJs中的特定节点时检查树的兄弟节点.

我为每个节点都给了id,我可以访问一个被点击的节点的id.那么我该如何继续自动检查子节点?

有人请帮帮我..

tree extjs extjs3

9
推荐指数
2
解决办法
2万
查看次数

PHP:检查XML节点是否存在属性

我似乎无法想出这个.我有以下XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<targets>
  <showcases>
    <building name="Big Blue" />
    <building name="Shiny Red" />
    <building name="Mellow Yellow" />
  </showcases>
</targets>
Run Code Online (Sandbox Code Playgroud)

我需要能够测试<building>具有给定名称的节点是否存在.我在Google上看到的所有内容都告诉我要执行以下操作:

$xdoc->getElementsByTagName('building')->item(0)->getAttributeNode('name')
Run Code Online (Sandbox Code Playgroud)

...但如果我理解正确,那不是只测试第一个<building>节点吗? item(0)?我需要使用XQuery吗?

我很感激一些帮助!谢谢!

php xml xpath

7
推荐指数
1
解决办法
3万
查看次数

Neo4j Cypher查询查找未连接的节点太慢

鉴于我们有以下Neo4j架构(简化但它显示了重要的一点).有两种类型的节点NODEVERSION.VERSIONs NODE通过VERSION_OF关系连接到s .VERSION节点确实有两个属性fromuntil这表示有效性时间跨度-一方或双方可以NULL(在Neo4j的条件不存在)表示无限.NODEs可以通过HAS_CHILD关系连接.同样,这些关系具有两个属性fromuntil这表示有效性时间跨度-一方或双方可以NULL(在Neo4j的条件不存在)表示无限.

编辑:VERSION节点和HAS_CHILD关系的有效日期是独立的(即使示例巧合地显示它们是对齐的).

在此输入图像描述

该示例示出了两个NODE小号.A有两个VERSIONs AV1直到6/30/17和AV2从7/1/17开始,而B只有一个版本BV1无限制.B通过关系连接到A,HAS_CHILD直到6/30/17.

现在的挑战是在一个特定时刻查询所有不是节点(即根节点)的节点.鉴于上面的例子中,查询应该返回刚刚如果查询日期,例如17年6月1日,但它应该返回一个如果查询日期如17年8月1日(因为一个是不是一个孩子B截至7/1/17更多).

今天的当前查询大致类似于那个:

MATCH …
Run Code Online (Sandbox Code Playgroud)

graph neo4j cypher

7
推荐指数
1
解决办法
708
查看次数

哪里可以使用Zend Framework翻译工具

我有整个MVC模型设置并使用HTML视图作为模板.但我在那里有德语字符串,我想在某些时候翻译成其他语言.

做这个的最好方式是什么?我知道我必须使用Zend_Translate,但是我必须为我的视图模板中的每个单词实现对translate函数的单个调用吗?

php translation localization zend-framework

6
推荐指数
1
解决办法
7291
查看次数