php字符串转换(html,ASCII)

2021-09-28

转义

// 在字符串$str的每个单引号、双引号、反斜线、null前加反斜杠,返回转换后的结果;可以防止sql注入
addslashes($str);

// 去除字符串$str中的转义反斜线
stripslashes($str);

// 在字符串$str的每个$charlist中的字符串前加反斜杠,返回转换后的结果
// $charlist中的\n,\r等字符以C语言风格转换,其它非字母数字且ASCII码低于32以及高于126的字符均转换成使用八进制表示。
addcslashes($str,  $charlist);

// 去除字符串$str中的转义反斜线,可识别类似C语言的 \n,\r,... 八进制以及十六进制的描述
stripcslashes($str);

// 在字符串$str的每个特殊字符前加反斜杠,返回转换后的结果;特殊字符包含 . \ + * ? [ ^ ] ( $ )
quotemeta($str);

ASCII转换

// 将字符串转换为0到255范围的无符号整型类
ord($string);

// 将0到255范围的无符号整型类转换为ASCII字符
chr($ascii);

html转换

// 在字符串$string新行前加'<br />' 或 '<br>'并返回;$is_xhtml为true表示使用XHTML兼容换行符
nl2br($string, $is_xhtml = true);

$tables = [
    HTML_SPECIALCHARS, // 
    HTML_ENTITIES      // 
];

$flags = [ // 使用多个可使用|拼接
    ENT_COMPAT,    // 转换表包含双引号而不是单引号的实体
    ENT_QUOTES,    // 转换表包含双引号和单引号的实体。
    ENT_NOQUOTES,  // 转换表既不包含单引号也不包含双引号的实体。
    ENT_HTML401,   // HTML 4.01的表格
    ENT_XML1,      // XML表1
    ENT_XHTML,     // XHTML表
    ENT_HTML5      // HTML5表格
];

// 获取htmlspecialchars()和htmlentities()的字符与实体符对应的转换表,返回数组
get_html_translation_table($table = HTML_ENTITIES, $flag = ENT_COMPAT | ENT_HTML401, $encoding = 'UTF-8');

$flags = [ // 使用多个可使用|拼接
    ENT_COMPAT,    // 转换双引号,不转换单引号
    ENT_QUOTES,    // 既转换双引号也转换单引号
    ENT_NOQUOTES,  // 单/双引号都不转换
    ENT_SUBSTITUTE, // 替换无效的代码单元序列为Unicode代替符(Replacement Character),U+FFFD (UTF-8)或者&#xFFFD;(其他),而不是返回空字符串
    ENT_DISALLOWED, // 为文档的无效代码点替换为Unicode代替符(Replacement Character):U+FFFD (UTF-8),或&#xFFFD;(其他),而不是把它们留在原处。比如在要保证XML文档嵌入额外内容时格式合法的情况下很有用。
    ENT_HTML401,   // 以HTML 4.01处理
    ENT_XML1,      // 以XML 1处理
    ENT_XHTML,     // 以XHTML处理
    ENT_HTML5      // 以HTML 5处理
];

// 将字符中$string中的字符转换为HTML转义字符,返回转义后的字符串,$double_encode为false时不会转换现有的HTMl实体;转换内容参考get_html_translation_table()
htmlentities($string, $flag = ENT_COMPAT | ENT_HTML401, $encoding = ini_get("default_charset"), $double_encode = true);

$flags = [ // 使用多个可使用|拼接
    ENT_COMPAT,    // 转换双引号,不转换单引号
    ENT_QUOTES,    // 既转换双引号也转换单引号
    ENT_NOQUOTES,  // 单/双引号都不转换
    ENT_HTML401,   // 以HTML 4.01处理
    ENT_XML1,      // 以XML 1处理
    ENT_XHTML,     // 以XHTML处理
    ENT_HTML5      // 以HTML 5处理
];

// 将HTML实体转换为相应的字符,返回转换后的字符串,$encoding默认为default_charset配置选项的值;转换内容参考get_html_translation_table()
html_entity_decode($string, $flag = ENT_COMPAT, $encoding = null);

$flags = [ // 使用多个可使用|拼接
    ENT_COMPAT,    // 转换双引号,不转换单引号
    ENT_QUOTES,    // 既转换双引号也转换单引号
    ENT_NOQUOTES,  // 单/双引号都不转换
    ENT_SUBSTITUTE, // 替换无效的代码单元序列为Unicode代替符(Replacement Character),U+FFFD (UTF-8)或者&#xFFFD;(其他),而不是返回空字符串
    ENT_DISALLOWED, // 为文档的无效代码点替换为Unicode代替符(Replacement Character):U+FFFD (UTF-8),或&#xFFFD;(其他),而不是把它们留在原处。比如在要保证XML文档嵌入额外内容时格式合法的情况下很有用。
    ENT_HTML401,   // 以HTML 4.01处理
    ENT_XML1,      // 以XML 1处理
    ENT_XHTML,     // 以XHTML处理
    ENT_HTML5      // 以HTML 5处理
];

// 将特殊字符转换为HTMl实体符,$double_encode为false时不会转换现有的HTMl实体;转换内容参考get_html_translation_table()
htmlspecialchars($string, $flag = ENT_COMPAT | ENT_HTML401, $encoding = ini_get("default_charset"), $double_encode = true);

$flags = [ // 使用多个可使用|拼接
    ENT_COMPAT,    // 转换双引号,不转换单引号
    ENT_QUOTES,    // 既转换双引号也转换单引号
    ENT_NOQUOTES,  // 单/双引号都不转换
    ENT_HTML401,   // 以HTML 4.01处理
    ENT_XML1,      // 以XML 1处理
    ENT_XHTML,     // 以XHTML处理
    ENT_HTML5      // 以HTML 5处理
];

// 将特殊的HTML实体转换回普通字符,被转换的实体有:&amp;,&quot;(没有设置ENT_NOQUOTES时), &#039;(设置了ENT_QUOTES时),&lt;以及&gt; 转换内容参考get_html_translation_table()
htmlspecialchars_decode($string, $flag = ENT_COMPAT | ENT_HTML401);

去除html标记、php标记

// 去除字符串$str中的空字符、HTML和PHP标记,$allowable_tags指定的字符将不会被删除;返回去除后的结果
strip_tags($str, $allowable_tags = ?);

 

{/if}