草庐IT

php: 在某些情况下避免使用 __get?

我有一个类,我正在使用__set。因为我不希望它设置任何东西,所以我有一组已批准的变量,它会在实际设置类属性之前检查这些变量。但是,在构建时,我希望__construct方法设置几个类属性,其中一些不在批准列表中。因此,当构造发生时,我执行$this->var=$value,我当然会得到我不允许设置该变量的异常。我能以某种方式解决这个问题吗? 最佳答案 声明类成员:classBlah{private$imAllowedToExist;//noexceptionthrownbecause__set()wontbecalled}

PHP - 避免每个页面的所有包含?

我目前正在编写一个用户身份验证系统。问题是,我不想为每个要使用该类的页面都包含类x、y、z等。例如,这是索引页://///////Iwouldliketonothavetoincludeallthesefileseverytime////////include_once'../privateFiles/includes/config/config.php';include_onceCLASSES.'\GeneratePage.php';include_onceDB.'\Db.php';include_onceHELPERS.'\HelperLibraryUser.php';//call

php - 避免单个类 PHP 的多个类实例化?

我编写了一个类来处理购物车的前端(Web浏览器端)。这相当简单,因为我向类发送一个我埋在URL中的产品ID,然后查询一个数据库,填充类变量以用于通过一些公共(public)方法检索数据。为了与我的实际物理网页交互,我有一个名为viewFunctions.php的文件。其中我实例化了名为ItemViewPackage()的类:因此,我有shoppingcartpage.php(物理url),它需要加载我的类ItemViewPackage()的文件viewFunctions.php。输出页面shoppingcartpage.php调用像get_item_info('title')或get_

php - csv解析, explode 避免 ""

我有一个用php解析的csv文件(真的很大)。现在是这样炼成的。x,y,z,value,etc但有时会出现这样的情况:x,"blah,blah,blah",z,value,etc这样做:explode(',',$string);如果是""值,也会explode其中的所有内容。array([0]=>x,[1]=>"blah,[2]=>blah,[3]=>blah"....)我该怎么做才能拥有这个:array([0]=>x,[1]=>"blah,blah,blah",[2]=>z....)代替?谢谢 最佳答案 不要使用explode,使

php - 避免javascript执行的最佳方法

我在我的应用程序中使用PHP和ZendFramework。用户可以输入一些HTML,管理员可以看到这个HTML。我想避免XSS注入(inject)。除了任何javascript之外,所有HTML都应按原样显示。我试图删除script标签,但它不安全。用户可以将javascript添加到onclick或其他事件。谢谢。 最佳答案 如果您希望像这样从XSS中清理用户输入,我会考虑使用HTMLpurifier仅删除脚本标签是不够的,您会错过任何人们可以添加的javascript内联,等等。HTMLpurifier但是会为您删除所有内容。从

php - query_posts() 应该避免吗?

我读到应该避免使用query_posts(),而使用wp_query()和pre_get_posts()。我对弄乱循环没有信心,也不完全理解法典。下面的代码是否使用了query_posts()?如果是,并且由于应避免使用query_posts(),您能否建议一种不使用query_posts()但仍能完成相同事情的方法?functions.php中的这段代码用于按随机或按价格对帖子进行排序。functionmy_custom_query($query){if($query->is_home()&&$query->is_main_query()){$sort=$_GET['sort'];i

php - 将字符串的每个字母包装在标签中,避免使用 HTML 标签

我想构建一个函数,它接受一个字符串并将其每个字母包装在中,除了空格和HTML标签(在我的例子中,标签)。所以:"Hithere."...应该成为"Hithere."我没有找到自己的解决方案,所以我环顾四周,发现很难找到我正在寻找的东西。我找到的最接近的答案是Neverever的答案here.但是,它似乎并没有很好地工作,因为的每个字符标签被包裹在中并且它与éèàï等重读字符不匹配。我该如何处理?为什么用正则表达式解析HTML标签看起来如此错误? 最佳答案 您可以使用([^\s>])(?!(?:[^]*)?>)获得结果正则表达式。要启

php - 在避免 UTF-8 错误的同时获取特定字符后的字符串

我在发帖前做了研究,但找不到答案。如何获取特定字符之后的字符串部分?例如,对于字符串:gallery/user/profile/img_904.jpg我要返回:img_904.jpg我还担心basename()关于包含亚洲字符的UTF-8文件名的错误。 最佳答案 在这种情况下,您可以只使用basename()function:php>$path='gallery/user/profile/img_904.jpg';php>echobasename($path);img_904.jpg作为一个更一般的例子,如果你想得到最后一个|之后的

php - 获取方括号的内容,避免嵌套括号

(第一次发布者,通过Google的长期访问者)我正在尝试提取一些方括号的内容,但我有一点麻烦。我已经让它适用于圆括号,如下所示,但我看不出应该如何修改它以适用于方括号。我原以为在此示例中将圆形替换为方形,反之亦然,但显然不行。它需要忽略括号内的括号。所以它不会返回(11)但会返回(10(11)12)。$preg='#\(((?>[^()]+)|(?R))*\)#x';$str='123(456)(789)(10(11)12)';if(preg_match_all($preg,$str,$matches)){$matches=$matches[0];}else{$matches=arra

php - 避免 zip 文件内容的绝对路径名

我正在用php编写。我有以下代码:$folder_to_zip="/var/www/html/zip/folder";$zip_file_location="/var/www/html/zip/archive.zip";$exec="zip-r$zip_file_location'$folder_to_zip'";exec($exec);我想将zip文件存储在/var/www/html/zip/archive.zip中,但当我打开该zip文件时,整个服务器路径都在zip中文件。我该如何编写以使服务器路径不在zip文件中?运行此命令的脚本不在同一目录中。它位于/var/www/html/