zoukankan      html  css  js  c++  java
  • str_replace() 中的参数 类型、反反斜杠

    上代码:

    <?php
    function cleanQueryWord($word)
    {
    $src = array('+', '-', '&', '|', '!', '(', ')', '{', '}', '[', ']', '^', '"', '~', '*', '?', ':');
    $dst = array('\+','\-','\&','\|','\!','\(','\)','\{','\}','\[','\]','\^','\"','\~','\*','\?','\:');
    $word = str_replace($src, $dst, $word);
    $word = str_replace('\\\\', '\\', $word);
    return $word;
    }
    var_dump(cleanQueryWord('!!-sb gameboy90!!@'));
    ?>

    str_replace中的前两个参数,$search和$replace的类型,都是mixed,而不是string!So,在设置替换规则时,你要注意。

    Description

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

    This function returns a string or an array with all occurrences of search in subject replaced with the given replace value.

     

    上面代码中的  $word = str_replace($src, $dst, $word);

    如果我们这里设置$word='!!-sb gameboy90!!@';

    运行之后出来的结果是: string(28) "\\!\\!\\-sb gameboy90\\!\\!@"

    这里,犹如三国杀里的锦囊“无懈可击”一样,它是可以被反无懈的,但是 \\\\ 和 \\ 的效果和反无懈可击又不是特别一样,\【\】\【\】这里用【】包起来的是被注释的,它的意思是在向编译器解释说,我(\【\】)是一个普通的符号,不想注释别人(其实可以理解为这张无懈可击我是当做普通的一张牌打出,并不是使用它的锦囊效果!);所以\\\\实际上就是两个普通的符号(\\)。

     

    至此,不是特别迷惑了吧??!!

  • 相关阅读:
    不允许保存更改,阻止保存要求重新创建表的更改
    sql server导入excel等数据
    python爬虫框架(3)--Scrapy框架安装配置
    SQL server 2008安装教程
    python爬虫框架(2)--PySpider框架安装配置
    python爬虫框架(1)--框架概述
    python爬虫(8)--Xpath语法与lxml库
    FastReport Designer 应用
    BootStrap Table
    BootStrap Table
  • 原文地址:https://www.cnblogs.com/gameboy90/p/2573132.html
Copyright © 2011-2022 走看看