假设我有三个表(这只是一个示例): users user_id username roles role_id name user_roles user_id role_id primary (boolean) 和相应的laravel模型: class User extends Eloquent { public function roles() { return $this->belongsToMany('Role')->withPivot('primary'); } } class Role extends Eloquent { public function users() { return $this->belongsToMany('User')->withPivot('primary');
以下是关于 filtering 的编程技术问答
这是我的问题: 我有一个文本方面,用户可以在其中输入他想要的任何东西. 当他发送此文本(帖子方法)时,在服务器端,我不过滤 在将其写入数据库之前(因为我想保持"完整"用户输入的内容(也许可以用作他试图破解或其他任何东西的证明). 然后,在输出之前,我使用此功能: public function textForWeb($texte,$br=true) { if ($br) { return mb_ereg_replace("((\r)?\n)", "
", htmlentities( stripslashes($texte), ENT_QUOTES, 'UTF-8' ) ); } else { return htmlentities( stripslashes($texte), ENT_QU
假设, $data = array( array('id' => 1, 'user_id' => 1, 'assignment_id' => 1, 'grade' => 90), array('id' => 2, 'user_id' => 3, 'assignment_id' => 2, 'grade' => 85), array('id' => 3, 'user_id' => 5, 'assignment_id' => 5, 'grade' => 66), ); 现在我想像以下内容一样过滤行: $rules = array( 'user_id' => 5, 'assignment_id' => 5 ); 这应该在$data[2]中返回该行. $rules = array( 'user_id' => 3, 'assignment_id' => 2, 'grade' => 85 ); 将返回$data[
我想知道如何过滤一个数组以删除不包含指定字符串的值? 示例: $array = ['January', 'February', 'March', 'April']; $to_search = "uary"; // not case sensitivity $result = somefunction($array, $to_search ); print_r($result); 预期输出为: $result = ['January', 'February']; 我希望在数组之间使用最有效,最快的方法,因为我可能使用的数组至少包含100个项目. 解决方案 demo 您应该选择 array_filter 函数. 例如 $to_search = "uary"; // not case sensitivity $array = array('January', 'February', 'March', 'April'); $result = array_
我有以下数组: $array = [ [2000, 401], [2000, 317], [2000, 301], [2002, 285], [2002, 277], [2002, 271], [2001, 208], [2001, 263], [2002, 285], [2001, 262], [2000, 258] ] 然后,我编写了以下代码将其值分组: $result06 = array(); foreach ($chart06 as $el) { if (!array_key_exists($el[0], $result06)) { $result06[$el[0]] = array(); } $result06[$el[0]][] = $el[1]; } 我们将收到以下结果: Array ( [2000] => Array
我有两个数组: $arr1 = array('a' => 10, 'b' => 20); $arr2 = array('a' => 10, 'b' => 20, 'c' => 30); 如何使用array_filter()从$arr2中删除$arr1中不存在的元素?在我的示例中喜欢" C". 解决方案 有一个专门为此目的制定的函数: array_intersect() : array_intersect - 计算数组的交集 $arr2 = array_intersect($arr1, $arr2); 如果要比较键,而不是 array_intersect() a>,使用 array_intersect_key() > array_intersect_key - 使用键进行比较 计算数组的交集 $arr2 = array_intersect_key($arr1, $arr2); 如果要比较key=>value pairs,请使用 ()
我的数组是: $array= array(4,3,4,3,1,2,1); 我想像以下内容一样输出它: Output = 2 (仅存在一次) 这是我尝试的: $array = array(4, 3, 4, 3, 1, 2, 1); $array1 = array(4, 3, 4, 3, 1, 2, 1); $array_diff = array_diff($array, $array1); 解决方案 *读取最稳定的技术的最后一部分避免流苏案例问题 - 它也是最详细的. 一线没有循环:( demo ) ) var_export(array_keys(array_intersect(array_count_values($array),[1]))); 分解: array_keys( // return the remaining keys from array_count_value
测试脚本 $i = 0; array_uintersect(['foo', 'bar'], ['baz', 'qux'], function($a, $b) use (&$i) { print_r([$a, $b, $i++]); }); 实际结果 Array ( [0] => bar [1] => foo [2] => 0 ) Array ( [0] => qux [1] => baz [2] => 1 ) Array ( [0] => bar [1] => qux [2] => 2 ) Array ( [0] => bar [1] => foo [2] => 3 ) 预期结果 Array ( [0] => foo [1] => baz [2] => 0 ) Array ( [0] => bar [1] => qux
这是数据 $array = array( 'random' => 1, 'pewpew' => 2, 'temp' => 5, 'xoxo' => 3, 'qweqweqe' => 4, ); $fields = array('random', 'xoxo', 'temp'); 我需要加入结果: $result = array( 'random' => 1, 'xoxo' => 3, 'temp' => 5, ); 我的意思是键的键/订单$ fields适用于$ array. 问题是: 我可以仅使用array_函数执行此转换吗? (我不想使用iteations) 如果是:您可以链接我需要的功能吗? (对不起,拼写错误) upd. php 5.2 解决方案 此代码保留订单并根据需要在PHP 5.2中工作 一行: $result = array_merge( ar
我目前正在一个具有PHP前端的项目中.我们非常关心安全性,因为我们将拥有很多用户,并且是黑客的有吸引力的目标.我们的用户能够提交以后其他用户可见的HTML格式化内容.这是一个大问题,因为我们在整个XSS攻击方面都很容易受到攻击.我们正在尽可能地过滤,但是攻击向量的种类很大. 所以,我正在寻找基于PHP的HTML消毒/过滤解决方案.商业解决方案很好(甚至首选).目前,我们正在使用修改的HTML净化器,但我们对结果不满意. 哪些能够过滤HTML的恶意部分的好库/工具? 很高兴拥有HTML5意识,一旦"野外"可用,它将成为安全噩梦. 更新: 我们正在进行 解决方案 html净化器项目 我个人在 html purifier project 方面取得了很好的成绩. 它是可自定义的,并且具有巨大的代码库.唯一的问题是将文件上传到您的服务器. 您确定安装没有配置问题吗?因为如果正确配置,净化器根本不应透过任何HTML标签. 来自网站: HTML净化
我已经在网上狩猎了几天,试图弄清楚这一点,但得到了矛盾的答案. 是否有PHP的库,类或功能可以牢固地对XSS进行安全措施/编码字符串?它需要定期更新以应对新攻击. 我有一些用例: 用例1)我有一个纯文本字段,例如一个名字或姓氏 用户将文本输入字段并提交表单 在将其保存到数据库之前,我想 a)修剪前面的任何空格, 字符串的结尾, b)将所有HTML标签从输入中剥离.这是一个名称文本字段,他们不应该有任何HTML. 然后,我将使用PDO准备的语句保存到数据库中. 我认为我只能做trim()和strip_tags()然后使用消毒过滤器或带有字符的白名单.他们真的需要类似的角色吗?和 ?或以其名称,不是真正的. 用例2)从先前保存的数据库记录(或先前提交的表单)输出内容时,我想彻底清洁XSS的内容. nb:它可能会或可能不会通过用例1中的过滤步骤,因为它可能是不同类型的输入,因此假设没有进行消毒. 最初我虽然htmlpurifier可以完成这项
我正在尝试进行一些预测性搜索,我正在使用preg_grep()作为远离SQL中的LIKE的一种方式. 我有以下数组: $values = array("Phorce" => 123, "Billy" => 234); 如果我有Phorc我想要所有数组元素(键和值),则具有Phorc的部分匹配,因此在这里Phorce => 123. preg_grep()? 是否可以 我尝试使用以下内容: $result = preg_grep('~' . 'Phorce' . '~', $values); 如何使我的代码如上所述工作? 解决方案 所以您想搜索键? $values = array("Phorce" => 123, "Billy" => 234); $results = preg_grep('/Phor/', array_keys($values)); $arr = []; foreach($results as $result) { $
我有以下2D数组,如果done等于no. $graph= array( "CityA" => array( "0" => "1", "1" => "CityC", "done" => "no", ), "CityB" => array( "0" => "4", "1" => "CityA", "done" => "no", ), "CityC" => array( "0" => "5", "1" => "CityA", "done" => "no", ), ); 解决方案 尝试这个, $arr = array_map(function($v){return $v[0];}, $graph); $key = array_keys($arr, min($arr)); 其他解决方案 您去这里. $tes = min( array_column( $graph, 0 ) );
我想从此数组中删除空值. Array( [0] => Array( [fcmToken] => 123 ) [1] => Array( [fcmToken] => ) [2] => Array( [fcmToken] => 789 ) ) 预期结果 Array( [0] => Array( [fcmToken] => 123 ) [1] => Array( [fcmToken] => 789 ) ) 解决方案 在这里,我们使用foreach迭代值,并使用$value $value for non-empty $value["fcmToken"] $result=array(); foreach($array as $key => $value) { if(!empty($value["fcmToken"])) { $result[]=$value; } } print_r($re
i具有多维输入数组和另一个包含用于过滤输入数组的规则的多维数组. $array = [ 'tableData' => [ [ 'booking_name' => 'abc/xyz/123', 'pdg' => 'assure', 'user_area' => 'es st', 'release' => 'oss72', 'start_date' => '2017-06-20 00:00:00', 'end_date' => '2017-06-23 00:00:00', 'asset_info' => [ [ 'status' => 10, 'manufacturer' => 'HP'
我有两个二维数组,并希望使用第二个数组过滤第一个数组的数据,以便保留的唯一元素是第一个和第二级中的键匹配的键. $array1 = [ 'a1' => ['a_name' => 'aaaaa', 'a_value' => 'aaa'], 'b1' => ['b_name' => 'bbbbb', 'b_value' => 'bbb'], 'c1' => ['c_name' => 'ccccc', 'c_value' => 'ccc'], ]; $array2 = [ 'b1' => ['b_name' => 'does not matter'], ]; 换句话说,我想要$array1和$array2的密钥的交集.结果必须来自$array1. 所需结果: ['b1' => ['b_name' => 'bbbbb']] 解决方案 function recursive_array_intersect_key(array $array
我有这个数组: 0 => array:3 [ "product_id" => "1138" "product_image" => "/resources/medias/shop/products/shop-6500720--1.png" "product_sku" => "6500722" ] 1 => array:3 [ "product_id" => "1144" "product_image" => "/resources/medias/shop/products/shop-6501041--1.png" "product_sku" => "6501046" ] 2 => array:3 [ "product_id" => "113" "product_image" => "/resources/medias/shop/products/shop-6294909--1.png" "product_