我知道有很多关于这个的帖子,stackoverflow:netbeans中的自动换行,对于一个,并且有些人说它已经包含在netbeans 7中,但是大多数情况下它们都是旧的,或者是不确定的.我使用netbeans 7.0.1,并且包含的自动换行最多只有一半和小故障.转到工具>选项>编辑器>格式化>换行并将其设置为"After Words"或"Anywhere"都会导致几乎相同的包装,并且两者都不是非常可靠.有时会按预期进行换行,但通常情况下,您可以通过垂直滚动条从一个单词到整个段落.有什么我想念的东西,或者真的是那种应该有用的方式吗?
我仍然在寻找并发布任何重要的发现,但有没有人知道解决这个问题的方法,或者为它安装的插件,或者其他什么?经过4年的调查后我会想到(2008年是我发现的最老的帖子)netbeans会修复它:(
顺便说一句:没有找到为什么我的代码长度不应超过80个字符的原因,有时候没有帮助,这个答案没有帮助.我也曾尝试在netbeans.conf文件中添加"-J-Dorg.netbeans.editor.linewrap =真",但是从我收集这是启用该功能在旧版本,并在我的什么也没做(我删除它) .
有没有更优雅的方法将SimpleXML属性转义为数组?
$result = $xml->xpath( $xpath );
$element = $result[ 0 ];
$attributes = (array) $element->attributes();
$attributes = $attributes[ '@attributes' ];
Run Code Online (Sandbox Code Playgroud)
我真的不想只是为了提取键/值对而循环它.我只需要将它放入一个数组然后传递它.我本以为attributes()默认会这样做,或者至少给出了选项.但我甚至无法在任何地方找到上述解决方案,我必须自己解决这个问题.我是在复杂这个还是什么?
编辑:
我仍然使用上面的脚本,直到我确定访问@attributes数组是否安全.
所以,有一段时间我一直在使用以下内容来检查我的帖子数据是否已设置.
if( ! empty( $_POST ) ) { }
Run Code Online (Sandbox Code Playgroud)
但最近我看到很多帖子说上面的内容是"黑客",下面是正确的"更好"的方式.
if( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) { }
Run Code Online (Sandbox Code Playgroud)
到最近,我只是说我最近才找到它.正在讨论这个后来方法的所有帖子都来自2009年.编码标准有点旧,所以我觉得可以对这个主题有一个新的看法.
我明白这两种方法是不同的.第一个被认为是"hack",只检查是否已经设置了post数组,如果发出了post请求,就会发生这种情况.第二个实际上检查服务器以查看是否已发出发布请求.我想第二个可能会更安全,但如果信息被清理干净,我看不出它有多大区别.
我也看过后者仅用于PHP版本<= 4的帖子,因为此时PHP仍在使用$_REQUEST全局,这就是PHP编码器用来确定某些请求参数的来源的方式.我不确定最后一个陈述是多么准确,因为旧帖子中提出的问题与我的相同.他们使用post global而不是request.然而,这是一个比其他任何一个(2011年)更新的帖子,并且从我开始信任的来源.所以我不知道该怎么做.
检查get时该怎么办?我已经看到有几个地方说服务器请求方法在这个实例中似乎不起作用,我只能假设它是因为post superscedes get而请求方法只能容纳一个参数.所以,如果您同时发布和获取数据,您会做什么?对其中一篇帖子的评论建议使用全局请求而不是发布和获取,但我一直认为这是一个坏主意.
这是我能找到的最新资料,我在提交之前通过查看侧面的类似问题这样做了.它特别询问使用提交值来检查表单是否已通过,但它也提到了请求方法.很多似乎表明后者仍然被普遍使用.这个建议仍然有效吗?检查请求方法仍然是最佳选择吗?
我一直在回顾所有旧代码并尝试优化它.我最近偶然发现的事情让我感到困惑的是试图为此找到一个xpath解决方案:
function findit($search) {
$i=0;
foreach($xml as $page) { //loop to find specific $element based on $attribute
if($page['src']==$search) { return $i; }
$i++;
}
}
Run Code Online (Sandbox Code Playgroud)
需要返回,$i以便以后可以用它来引用XML中的元素.
看起来它应该是可能的,而且我发现了一些似乎应该工作的xpath字符串,但却没有.它们通常preceding-children通过xpath()函数引用和计算它们,但我找不到原始的源代码,也不知道如何将它转换为PHP xpath字符串.
这甚至可能吗?或者它比我已经获得的更好/更快/更有效率?建议/解决方案?
编辑:对于Tandu的解决方案
我的XML文件示例
<range>
<page src="attribute1" />
<page src="attribute2" />
etc...
<page src="attribut20" />
</range>
Run Code Online (Sandbox Code Playgroud)
在我当前的PHP函数中,$i总是返回0但应返回$search找到的任何位置.编辑,所以它不再需要转换simplexml.
function findit($search) {
$dom=new DOMDocument('1.0');
$dom->load($file);
$xpath=new DOMXPath($dom);
$i=$xpath->evaluate("count(/range/page[@src='$search']/preceding-sibling::*)");
die($dom->saveXML());
}
Run Code Online (Sandbox Code Playgroud) 我是 Zend Framework 的新手,所以如果我错过了一些简单的东西,我很抱歉。但是,我认为直接从文档中获取的代码可以工作。相反,我得到了一个未捕获的异常。
Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cross-reference streams are not supported yet.' in C:\xampp\php\zend\library\Zend\Pdf\Parser.php:318
Stack trace:
#0 C:\xampp\php\zend\library\Zend\Pdf\Parser.php(460): Zend_Pdf_Parser->_loadXRefTable('116')
#1 C:\xampp\php\zend\library\Zend\Pdf.php(318): Zend_Pdf_Parser->__construct('PDF/Current...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 C:\xampp\php\zend\library\Zend\Pdf.php(267): Zend_Pdf->__construct('PDF/Current...', NULL, true)
#3 C:\xampp\htdocs\test\test.php(7): Zend_Pdf::load('PDF/Current...')
#4 {main}
thrown in C:\xampp\php\zend\library\Zend\Pdf\Parser.php on line 318
Run Code Online (Sandbox Code Playgroud)
我一直在四处寻找可能的解决方案,但运气不佳。这是最相似的,它并不能解决我的问题。根据我在那里读到的内容以及其他来源的内容,PDF 版本 1.4 及更早版本应该可以正常工作,但这里的情况并非如此,而且它已经存在很多年了。我的 PDF 版本都是 1.4,所以我什至不确定该帖子的准确性。该代码适用于演示中包含的 PDF,但不适用于我尝试使用的任何现有 PDF。我会上传 PDF,但它们都是保密的。
我只是想获取元数据,但我什至无法加载文档。我开始使用框架,这样我就不必创建自己的解析器。如果有一种更简单的方法可以做到这一点,或者如果有人可以阐明这一点,我将非常感激。
编辑:为了澄清,我已经尝试了链接文档页面中的两种方法。两者都不起作用。
我正在尝试使用变量动态访问$ _GET和$ _POST数组等.我试图这样做的原因是我可以在多个数组上执行类似的操作,而无需为每个数组声明特定的迭代.我有理由相信这是可能的,因为PHP的文档说它能够使用变量来动态访问数组,但是我无法让它工作.一个简单的演示是当我试图验证某个属性已被设置时.
if(isset(${$this->_array}[$property])) { return ${$this->_array}[$property]; }
else { return null; }
Run Code Online (Sandbox Code Playgroud)
当我运行上面的脚本时,我总是得到null,但是当我静态地寻找所需的属性时,手动使用$ _GET或$ _POST,我得到了预期的结果.我有三重检查$this->_array,$property他们正在返回正确的字符串值.这些数组是否不可用于此类访问,或者我做错了什么?
我是Java的新手,但不是编程的新手,所以作为我的第一个项目,我决定为工作中的某个人创建一个.txt-.csv解析器.我读取了.txt文件中的每一行,并将其分成单独的地图,用于部分,子部分,子部分和子部分的内容.然后将每个地图分配到其上方的地图(下面将详细介绍).我打印好的一切都很好,但是当我尝试阅读它时,我得到以下错误:"java.lang.String cannot be cast to java.util.Map".该错误仅在代码运行后出现,而不是在编译时出现,也不出现在NetBeans IDE中.
我的地图是以下形式,每个对象都是它下面的地图:(为什么Java不能使这个简单的-_-关联数组都是我想要的)
(Map)array=<string,Object>
(Map)subarray=<String,Object>
(Map)subsubarray=<String,Object>
(Map)subsubcontents=<String,String>
Run Code Online (Sandbox Code Playgroud)
可能不是最有效的阅读方法,计划稍后将其转换为递归函数,但这是我的代码,从我的项目中复制粘贴.我把评论放在我发现错误的地方.
public static Map<String,Object> array=new HashMap<String,Object>();
/* Code for populating the following Maps and pushing them into array
<String,Object>subarray
<String,Object>subsubarray
<String,String>subsubcontents
*/
Set section=array.entrySet();
Iterator sectionI=section.iterator();
while(sectionI.hasNext()) {
Map.Entry sectionInfo=(Map.Entry)sectionI.next();
Map<String,Object> subMap=(Map)sectionInfo.getValue();
Set subSet=subMap.entrySet();
Iterator subI=subSet.iterator();
while(subI.hasNext()) {
Map.Entry subInfo=(Map.Entry)subI.next();
Map<String,Object> subsubMap=(Map)subInfo.getValue();
Set subsubSet=subsubMap.entrySet();
Iterator subsubI=subsubSet.iterator();
while(subsubI.hasNext()) {
System.out.println("test");
Map.Entry subsubInfo=(Map.Entry)subsubI.next();
Map<String,Object> subcontentsMap=(Map)subsubInfo.getValue();
/*
The above line seems to be causing the issues.
If you comment …Run Code Online (Sandbox Code Playgroud)