使用Laravel模型过滤数据透视表数据
假设我有三个表(这只是一个示例): 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');
0 2023-05-30
编程技术问答社区
Php:删除所有标签,但在文本中删除 "a href"。
这是我的问题: 我有一个文本方面,用户可以在其中输入他想要的任何东西. 当他发送此文本(帖子方法)时,在服务器端,我不过滤 在将其写入数据库之前(因为我想保持"完整"用户输入的内容(也许可以用作他试图破解或其他任何东西的证明). 然后,在输出之前,我使用此功能: 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
0 2023-05-29
编程技术问答社区
通过匹配关联数组中的一个或多个键值对来过滤数组行
假设, $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[
0 2023-05-29
编程技术问答社区
过滤掉不包含指定子串的数组值
我想知道如何过滤一个数组以删除不包含指定字符串的值? 示例: $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_
4 2023-05-29
编程技术问答社区
按一列对数据行进行分组,并在每组中找到另一列的最大值
我有以下数组: $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
0 2023-05-29
编程技术问答社区
在另一个平坦的关联阵列中口气过滤一个平坦的关联阵列
我有两个数组: $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,请使用 ()
2 2023-05-29
编程技术问答社区
寻找数组中的非重复元素
我的数组是: $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
0 2023-05-28
编程技术问答社区
php-如何验证一个正则表达式本身?
我需要验证用户输入,这可能是他/她自己的应用程序中过滤字段的正则表达式,我该如何检查该正则有效性? 解决方案 将其传递到虚拟呼叫preg_match(),看看它是否返回false(指示错误)? 注意:: 根据您打算在何处运行此应用程序,我会质疑允许用户执行此操作的决定.您可能正在为拒绝服务的攻击做好准备;恶意用户需要做的就是提供一个非常漫长,复杂的正则弦线,您的服务器会陷入困境.
0 2023-05-28
编程技术问答社区
为什么array_uintersect()会比较array1和array2,array1和array1,以及array2和array2之间的元素?
测试脚本 $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
0 2023-05-28
编程技术问答社区
使用另一个数组的值和订单结果通过第二个数组的滤波数组通过其键进行过滤器数组
这是数据 $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
0 2023-05-28
编程技术问答社区
有什么好的基于PHP的HTML过滤器可用吗?
我目前正在一个具有PHP前端的项目中.我们非常关心安全性,因为我们将拥有很多用户,并且是黑客的有吸引力的目标.我们的用户能够提交以后其他用户可见的HTML格式化内容.这是一个大问题,因为我们在整个XSS攻击方面都很容易受到攻击.我们正在尽可能地过滤,但是攻击向量的种类很大. 所以,我正在寻找基于PHP的HTML消毒/过滤解决方案.商业解决方案很好(甚至首选).目前,我们正在使用修改的HTML净化器,但我们对结果不满意. 哪些能够过滤HTML的恶意部分的好库/工具? 很高兴拥有HTML5意识,一旦"野外"可用,它将成为安全噩梦. 更新: 我们正在进行 解决方案 html净化器项目 我个人在 html purifier project 方面取得了很好的成绩. 它是可自定义的,并且具有巨大的代码库.唯一的问题是将文件上传到您的服务器. 您确定安装没有配置问题吗?因为如果正确配置,净化器根本不应透过任何HTML标签. 来自网站: HTML净化
0 2023-05-28
编程技术问答社区
安全的XSS清理功能(定期更新)
我已经在网上狩猎了几天,试图弄清楚这一点,但得到了矛盾的答案. 是否有PHP的库,类或功能可以牢固地对XSS进行安全措施/编码字符串?它需要定期更新以应对新攻击. 我有一些用例: 用例1)我有一个纯文本字段,例如一个名字或姓氏 用户将文本输入字段并提交表单 在将其保存到数据库之前,我想 a)修剪前面的任何空格, 字符串的结尾, b)将所有HTML标签从输入中剥离.这是一个名称文本字段,他们不应该有任何HTML. 然后,我将使用PDO准备的语句保存到数据库中. 我认为我只能做trim()和strip_tags()然后使用消毒过滤器或带有字符的白名单.他们真的需要类似的角色吗?和 ?或以其名称,不是真正的. 用例2)从先前保存的数据库记录(或先前提交的表单)输出内容时,我想彻底清洁XSS的内容. nb:它可能会或可能不会通过用例1中的过滤步骤,因为它可能是不同类型的输入,因此假设没有进行消毒. 最初我虽然htmlpurifier可以完成这项
0 2023-05-28
编程技术问答社区
过滤数组,保留所有键值包含搜索字符串的元素
我正在尝试进行一些预测性搜索,我正在使用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) { $
0 2023-05-27
编程技术问答社区
在列中以特定值和另一列中的最小值找到2D数组中的行
我有以下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 ) );
0 2023-05-27
编程技术问答社区
如何删除多维数组中的空值?
我想从此数组中删除空值. 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
0 2023-05-27
编程技术问答社区
使用另一个多维数组的多个规则过滤多维数组
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'
2 2023-05-27
编程技术问答社区
PHP通过特定键过滤2维数组
我有这个数组: Array ( [702a4584] => Array ( [type] => folder [id] => 702a4584 ) [b547b3a9] => Array ( [type] => folder [id] => b547b3a9 ) [fcb0d055] => Array ( [type] => page [id] => fcb0d055 ) ) 我想过滤数组,以便仅键入"文件夹": Array ( [702a4584] => Array ( [type] => folder [id] => 702a458
0 2023-05-27
编程技术问答社区
使用另一个二维关联数组的多级键来过滤二维关联数组
我有两个二维数组,并希望使用第二个数组过滤第一个数组的数据,以便保留的唯一元素是第一个和第二级中的键匹配的键. $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 2023-05-27
编程技术问答社区
根据另一个数组保存二维数组的每一行中的元素
我有这个数组: 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_
2 2023-05-27
编程技术问答社区