首页 > 编程技术 > php

PHP substr_replace 替换字符串指定位置字符

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

/*
int mb_strlen ( string $str [, string $encoding ] )

 代码如下 复制代码
<?php教程
echo substr_replace("Hello world","earth",6); Hello earth
?>

值得一提的,当开始和长度都是负和,长度小于或等于开始,长度将有被设置为0的效果。

 代码如下 复制代码
<?php
substr_replace('eggs','x',-1,-1); //eggxs
substr_replace('eggs','x',-1,-2); //eggxs
substr_replace('eggs','x',-1,-2); //eggxs
?>

Same as:
<?php
substr_replace('eggs','x',-1,0); //eggxs
?>

 代码如下 复制代码
<?php
substr_replace('huevos','x',-2,-2); //huevxos
substr_replace('huevos','x',-2,-3); //huevxos
substr_replace('huevos','x',-2,-3); //huevxos
?>

Same as:

 代码如下 复制代码
<?php
substr_replace('huevos','x',-2,0); //huevxos
?>

另一个注意,如果长度为负,开始偏移为长度相同的位置,长度(再次)将具有影响被定为0。 (当然,在手册中提到,当长度为负它实际上代表了之前的立场)

 代码如下 复制代码

<?php
substr_replace('abcd', 'x', 0, -4); //xabcd
?>

Same as:
<?php
substr_replace('abcd','x',0,0); //xabcd
?>

<?php
substr_replace('abcd', 'x', 1, -3); //axbcd
?>

Same as:
<?php
substr_replace('abcd', 'x', 1, 0); //axbcd
?>

看一下参数说明


string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start 必需。规定在字符串的何处开始替换。

正数 - 在第 start 个偏移量开始替换
负数 - 在从字符串结尾的第 start 个偏移量开始替换
0 - 在字符串中的第一个字符处开始替换
 
charlist 可选。规定要替换多少个字符。

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

mb_strlen 及 strlen 计算字符串长度区别在使用 mb_strlen必须把php.ini中php_mbstring.dll前面的\\\";\\\"去了才行,不过一般的套装包默认是去了的。
 代码如下 复制代码

//strlen
//int strlen ( string $string )

$str = '123456';
echo strlen($str); // 6

$str = ' ab cd www.111cn.net';
echo strlen($str); // 20

$ch ='中国';

echo strlen($ch);//4

echo utf8_strlen($str); //20
//

 代码如下 复制代码

function utf8_strlen($str)
    {
    $count = 0;

    for($i = 0; $i < strlen($str); $i++)
        {
        $value = ord($str[$i]);
        if($value > 127)
            {
            if($value >= 192 && $value <= 223)
                $i++;
            elseif($value >= 224 && $value <= 239)
                $i = $i + 2;
            elseif($value >= 240 && $value <= 247)
                $i = $i + 3;
            else
                die('Not a UTF-8 compatible string');
            }
      
        $count++;
        }
  
    return $count;
}

// 下面来看看mb_strlen实例
echo '<br />';
$str ='中国';
echo mb_strlen($str,'gbk'); //2 长度为2,而刚才我们用strlen时输出的时4,从这里可看出mb_strlen设置了他的编码为gbk时就当中文处理了。
echo mb_strlen( $str,'utf8');//3

// 当我们设置mb_strlen参数是uft8编码时他的长度为3

//来看个计算中英文混排字符串长度实例

 

$str='中文a字1符中国WEB第一站www.111cn.net原创文章';
//计算如下
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
echo
//输出结果
//10
/*
strlen //计算字符串长度,一个中文当2字符
mb_strlen //根据它的字符编码模式,统计字符quot;
在使用 mb_strlen必须把php教程.ini中php_mbstring.dll前面的";"去了才行,不过一般的套装包默认是去了的。
本站原创文章,转载注明来源www.111cn.net

1.使用mysql_real_escape_string代替 addslashes对输入进行转义 2.字段值两边加上单引号

str_replace替换sql 中的 update 这种做法本身就是错误的, 原因如下:

如果sql中本来就有update字段,如以下的SQL

 代码如下 复制代码
$sql = "update content = 'update your name ..' where userid=1"

那么,你用str_replace替换的后果是什么? 只要用户提交的内容中包含有update,

delete, alter均被篡改?  这是多么可怕的事!!!

那么正确的办法是什么呢?

 代码如下 复制代码
$content = mysql教程_real_escape_string($content);
$sql = "update content = '$content' where userid=1
//下面提供一三个针对函数来测试服务器的整数运算能力测试, 浮点运算能力测试和数据IO能力测试哦。
 代码如下 复制代码
    function test_int()
    {
        $timeStart = gettimeofday();
        for($i = 0; $i < 3000000; $i++);
        {
            $t = 1+1;
        }
        $timeEnd = gettimeofday();
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return $time;
    }

/*--------
    浮点运算能力测试
----------*/
  

 代码如下 复制代码
  function test_float()
    {
        $t = pi();
        $timeStart = gettimeofday();
        for($i = 0; $i < 3000000; $i++);
        {
            sqrt($t);
        }
        $timeEnd = gettimeofday();
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return $time;
    }


/*-----
    数据IO能力测试
-----*/

 代码如下 复制代码
    function test_io()
    {
        $fp = fopen(PHPSELF, "r");
        $timeStart = gettimeofday();
        for($i = 0; $i < 10000; $i++)
        {
            fread($fp, 10240);
            rewind($fp);
        }
        $timeEnd = gettimeofday();
        fclose($fp);
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return($time);
    }


 /*
  很多公司都自己写了相关的服务器针探测试工具,我们为你提供的只是三种简的整型运算,浮点运算,与io数据输出压力测试。

本程序是先利用判断服务器是否是支持curl_init如果是就模仿用户读取远程数据,并且 进行解析正则过滤不要的信息,否则就用file采集远程数据,如果服务器还不支持file就提示无法采集想要的内容
 代码如下 复制代码

$timestamp = time();
function open($file,$type=''){
        global $fromurl,$referer;
        $cachename=$file;
                if($type){
                        $file='/'.$type.'/'.$file;
                }else{
                        $file=$file;
                }
                        if($open=file($file)){
                                        $count=count($open);
                                        for($i=0;$i<$count;$i++){
                                                $theget.=$open[$i];
                                        }
                                }else{
                                        die('无法连接源站网络,请刷新');
                                }
        return $theget;
}

function cut($file,$from,$end){
        $message=explode($from,$file);
        $message=explode($end,$message[1]);
return        $message[0];
}

function curl($openurl)
{
 global $isfun;
 if($isfun=="curl"){
 $ch = curl_init($openurl);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $file = curl_exec($ch);
 curl_close($ch);
 }
 elseif($isfun=="fopen"){
  $file=open($openurl);
 }
 else{ echo "<script>alert('你的空间不支持本程序,谢谢使用');window.close();</script>";}
 return $file;
}

//使用方法

 代码如下 复制代码
$url = 'http://www.111cn.net';
$content = open($url,0);

/*
下面的函数用来判断函数是否可用
*/

 代码如下 复制代码

function isfun($funName)
 {
        return (false !== function_exists($funName))?YES:NO;
 }
?>

标签:[!--infotagslink--]

您可能感兴趣的文章: