首页 > 编程技术 > php

php从指定位置开始替换字符方法

发布时间:2016-11-25 15:09


定义和用法
substr_replace() 函数把字符串的一部分替换为另一个字符串。

语法
substr_replace(string,replacement,start,length)

<?php教程
echo substr_replace("hello world","earth",6);
?>

参数 描述
string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start

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

  • 正数 - 在第 start 个偏移量开始替换
  • 负数 - 在从字符串结尾的第 start 个偏移量开始替换
  • 0 - 在字符串中的第一个字符处开始替换
charlist

可选。规定要替换多少个字符。

  • 正数 - 被替换的字符串长度
  • 负数 - 从字符串末端开始的被替换字符数
  • 0 - 插入而非替换

在php教程获取表单数据有专用的命令, $_POST[]就是这个函数了,下面我们一个简单的实例

<?php
echo 'Hello, ' . $_POST['first_name'] . '!';
?>
 
输出是来自表单的first_name的值。

再复杂一点点的实例,

$_POST['name'] = trim($_POST['name']);

if (strlen($_POST['name']) == 0) {
    $errors[] = "Your name is required.";
}

好了,下面做一个关于$_POST的完整实例

<?php
  $user =  $_POST['user'];
  $color = $_POST['color'];
  $self =  $_SERVER['PHP_SELF'];

  if( ( $user != null ) and ( $color != null ) )
  {
    setcookie( "firstname", $user , time() + 36000 );
    setcookie( "fontcolor", $color, time() + 36000 );
    header( "Location:getcookie.php" );
    exit();
  }
?>

 

<html>

 <head>
  <title>Set Cookie Data</title>
 </head>

 <body>

  <form action ="<?php echo( $self ); ?>" method = "post">

  Please enter your first name:
  <input type = "text" name = "user"><br><br>

  Please choose your favorite font color:<br>
  <input type = "radio" name = "color" value = "#FF0000">Red
  <input type = "radio" name = "color" value = "#00FF00">Green
  <input type = "radio" name = "color" value = "#0000FF">Blue
  <br><br>
  <input type = "submit" value = "submit">
  </form>

 </body>

</html>


 
总结:上面的实例没做安全处理,只是简单的获取了表单提交的数据,我们可以做一些安全处理,如isset() addslashes 等处理。

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 php教程,您能够创建并取回 cookie 的值。
如何创建 cookie?
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法
setcookie(name, value, expire, path, domain);例子
在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "alex porter"。我们也规定了此 cookie 在一小时后过期


最简单的cookie创建方法

<?php

  echo( "cookie created? : " . setcookie("cookie_name", "cookie_data" ) );

?>

实例二cookies存数组

<?
setcookie("php[uid]", "1111111111111111", time()+3600);
setcookie("php[color]", "black", time()+3600);
setcookie("php[preference]", "english", time()+3600);

if (isset ($php)) {
   while (list ($name, $value) = each ($php)) {
      echo "$name = $value<br>n";
   }
}
?>

cookie删除

<?php
setcookie ( "cookie_user", "test", time () + 60 * 60 * 24 * 30 );
setcookie ( "cookie_pass", md5 ( "test" ), time () + 60 * 60 * 24 * 30 );

function logout() {
  setcookie ( "cookie_user", "", time () + 60 * 60 * 24 * 30 );
  setcookie ( "cookie_pass", "", time () + 60 * 60 * 24 * 30 );
}
logout ();
echo $_cookie ['cookie_user'] . "<br />";
echo "you have successfully logged out.";
?>


 
下面一个利用cookies记录用户名自动登录函数实例

 

<?php
  $globals['username'] = "test";
  $globals['password'] = "test";
 
  function validatelogin ($username, $password){
    if (strcmp ($username, $globals['username']) == 0 && strcmp ($password, $globals['password']) == 0){
      setcookie ("cookie_user", $username, time()+60*60*24*30);
      setcookie ("cookie_pass", md5 ($password), time()+60*60*24*30);
      return true;
    } else {
      return false;
    }
  }
  if (validatelogin ("test","test")){
    echo "successfully logged in.";
  } else {
    echo "sorry, invalid login.";
  }
?>
 

http_referer 获取用户来路实例
这是个php教程自来全局变量,所以我们不多介绍了,直接看实例

<?php
            if (isset($_server['http_referer'])) {
                    print "the page you were on previously was {$_server['http_referer']}<br />";
            } else {
                    print "you didn't click any links to get here<br />";
            }
    ?>

    <a href="refer.php">click me!</a>
 

上传文件我们少不了move_uploaded_file函数本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php教程 的 http post 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。


先来看一个关于在上传关表单设置

<html>
<head>
<title>a simple file upload form</title>
</head>
<body>
<form enctype="multipart/form-data"
   action="<?print $_server['php_self']?>" method="post">
<p>
<input type="hidden" name="max_file_size" value="102400" />
<input type="file" name="fupload" /><br/>
<input type="submit" value="upload!" />
</p>
</form>
</body>
</html>

这样我们主设置的上传文件最大不能超过102400字节了

在php中要实现文件上传很简单如下代码

if ( $_files['fupload']['type'] == "image/gif" ) {

         $source = $_files['fupload']['tmp_name'];
         $target = "upload/".$_files['fupload']['name'];
         move_uploaded_file( $source, $target );// or die ("couldn't copy");
         $size = getimagesize( $target );

         $imgstr = "<p><img width="$size[0]" height="$size[1]" ";
         $imgstr .= "src="$target" alt="uploaded image" /></p>";

         print $imgstr;
     }


这样就ko了,下面我们总结实例

php
<html>
<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="max_file_size" value="6000000" /> <!--设置允许提交表单的最大字节数-->
文件上传: <input name="file" type="file" />
<input type="submit" value="上传"/>
</form>
</html>

 

<?
//处理程序
function extend($file_name) //定义获取文件的扩展名函数
{$extend =explode("." , $file_name);
$va=count($extend)-1;
return strtolower($extend[$va]);}

$dirname="../";//是否启用上一层路径,格式为:$dirname="../";或$dirname="http://www.cnblogs.com/";等等与$dir组合使用,注意不要溢出根路径
$dir='upload/aa/bb';//设定上传目录,与上面的$dirname组合
$file=$_files['file'];//从文件域表单获取文件
$filename=$file['name'] ;//获取文件全名
$c_filesize=$file['size'] ;//获取本地的文件大小
$extendname=extend($filename);//获取文件扩展名
if($c_filesize>200000000000)die("文件太大");//限制上传文件大小, 单位字节

//if($extendname!="jpg")die("只允许上传jpg格式的图片");//限制上传文件格式,去掉语句开头的两斜杠生效

if(!file_exists($dir));//检查目录文件夹是否存在,不存在则建立新文件夹
{
$v=split ('[/.-]', $dir);
for ( $i=0 ; $i <count($v) ; $i++)
{$dirname=$dirname.$v[$i];
if(!file_exists($dirname))mkdir($dirname);
$dirname=$dirname."/";}
} //目录创建完毕
?>

<?
$dest=$dirname.date("ymdhis", time()).rand(100000,999999).".".$extendname; //设置文件名为日期加上从100000到999999的随机数和扩展名
if(file_exists($dest))die("该文件已经存在");
if(move_uploaded_file($file['tmp_name'],$dest)) //调用文件上传函数
{$s_filesize=filesize($dest);//获取服务器端的文件大小
echo "文件上传成功,<a href=".$dest.">查看文件地址</a>";
echo "<br>本地文件名:".$filename;
echo "<br>远端文件名:".$dest;
echo "<br>大 小:".ceil($s_filesize/1024)." kb";
echo "<br>扩展名:".$extendname;
echo "<br>大 小:".$c_filesize." byte";}
else
{echo "还未进行文件上传";}
?>


总结了文件上传的错误代码

  upload_err_ok没有错误。
  
  upload_err_ini_size的上传的文件超过最高价值存在中指定的文件。
  
  upload_err_form_size的上传的文件超过最高价值所指定的max_file_size隐藏的部件。
  
  upload_err_partial的文件上传被取消了,只有部分的文件被上传。
  
  upload_err_nofile没有文件被上传。

 

标签:[!--infotagslink--]

您可能感兴趣的文章: