php in_array(),substr(),file_put_concents(),PHP_EOL,count()

<?php
header("content-type:text/html;charset=utf-8");
show_source(__FILE__);
echo '<pre>';
include('u/ip.php');
include('flag.php');
if (in_array($_SERVER['REMOTE_ADDR'],$ip)){
  die("您的ip已进入系统黑名单");
}
echo "hello";
var_dump($ip);

if ($_POST[substr($flag,5,3)]=='attack'){
  echo $flag;
}else if (count($_POST)>0){
  $ip = '$ip[]="'.$_SERVER['REMOTE_ADDR'].'";'.PHP_EOL; 
  file_put_contents('u/ip.php',$ip,FILE_APPEND);
}
echo '</pre>';
?>

根据代码学习函数,我是个半吊子。

一.in_array

定义和用法

in_array() 函数搜索数组中是否存在指定的值。

注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。

语法

in_array(search,array,type)
参数描述
search必需。规定要在数组搜索的值。
array必需。规定要搜索的数组。
type可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

说明

如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 search 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

技术细节

返回值:如果在数组中找到值则返回 TRUE,否则返回 FALSE。
PHP 版本:4+
Changelog:自 PHP 4.2 起,search 参数现在也可能是数组。

实例

<?php
$people = array("Bill", "Steve", "Mark", "David");

if (in_array("Mark", $people))
  {
  echo "匹配已找到";
  }
else
  {
  echo "匹配未找到";
  }
?>

二.file_put_conents()

定义和用法

file_put_contents() 函数把一个字符串写入文件中。

与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

语法

file_put_contents(file,data,mode,context)
参数描述
file必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode

可选。规定如何打开/写入文件。可能的值:

  • FILE_USE_INCLUDE_PATH  检查 filename 副本的内置路径
  • FILE_APPEND避免覆盖已有内容
  • LOCK_EX   对文件上锁
context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

说明

参数 data 可以是数组(但不能是多维数组)。

自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

context 参数的支持是 PHP 5.0.0 添加的。

返回值

该函数将返回写入到文件内数据的字节数。

提示和注释

  • 如果文件不存在,则创建文件,相当于fopen()函数行为。
  • 如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免。
  • 本函数可安全用于二进制对象。

三.substr

定义和用法

substr() 函数返回字符串的一部分。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

语法

substr(string,start,length)
参数描述
string必需。规定要返回其中一部分的字符串。
start

必需。规定在字符串的何处开始。

  • 正数 - 在字符串的指定位置开始
  • 负数 - 在从字符串结尾开始的指定位置开始
  • 0 - 在字符串中的第一个字符处开始
length

可选。规定被返回字符串的长度。默认是直到字符串的结尾。

  • 正数 - 从 start 参数所在的位置返回的长度
  • 负数 - 从字符串末端返回的长度

技术细节

返回值:返回字符串的提取部分,若失败则返回 FALSE,或者返回一个空字符串。
PHP 版本:4+
更新日志:

在 PHP 5.2.2 到 5.2.6 版本中,如果 start 参数表示负截断或者越界位置,则返回 FALSE。

其他版本则从 start 位置开始获取字符串。

更多实例

例子

使用带有不同正负数的 startlength 参数:

<?php
echo substr("Hello world",0,10)."<br>"; //Hello worl
echo substr("Hello world",1,8)."<br>";  //ello wor
echo substr("Hello world",0,5)."<br>"; //Hello
echo substr("Hello world",6,6)."<br>";//world

echo substr("Hello world",0,-1)."<br>"; //Hello worl
echo substr("Hello world",-10,-2)."<br>"; //ello wor
echo substr("Hello world",0,-6)."<br>"; //Hello
echo substr("Hello world",-2-3)."<br>";  //world
?>

四.PHP_EOL

换行符

unix系列用 \n

windows系列用 \r\n

mac用 \r

PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性

将文件中的内容合成一行

$str = str_replace(PHP_EOL, '', $str);

向文件中追加内容并换行

 $ip = '$ip[]="'.$_SERVER['REMOTE_ADDR'].'";'.PHP_EOL; 
 file_put_contents('u/ip.php',$ip,FILE_APPEND);

五.count()

定义和用法

count() 函数返回数组中元素的数目。

语法

count(array,mode);
参数描述
array必需。规定数组。
mode

可选。规定模式。可能的值:

  • 0 - 默认。不对多维数组中的所有元素进行计数
  • 1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素)

说明

count() 函数计算数组中的单元数目或对象中的属性个数。

对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。

如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。

技术细节

返回值:返回数组中元素的数目。
PHP 版本:4+
更新日志:mode 参数是在 PHP 4.2 中新增的。

更多实例

例子 1

递归地对数组进行计数:

<?php
$cars=array
  (
  "Volvo"=>array
  (
  "XC60",
  "XC90"
  ),
  "BMW"=>array
  (
  "X3",
  "X5"
  ),
  "Toyota"=>array
  (
  "Highlander"
  )
  );

echo "常规计数:" . count($cars)."<br>";
echo "递归计数:" . count($cars,1);
?>


运行结果

常规计数:3
递归计数:8




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值