a8e3321fbd
We'd like to start using ##mixed## instead of ##var## for attribute types to be consistent with Hack. As a followup to this (once released), we would codemod all ##var## to ##mixed##.
139 linhas
5.0 KiB
C++
139 linhas
5.0 KiB
C++
/*
|
|
+----------------------------------------------------------------------+
|
|
| HipHop for PHP |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 2010-2013 Facebook, Inc. (http://www.facebook.com) |
|
|
| Copyright (c) 1998-2010 Zend Technologies Ltd. (http://www.zend.com) |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 2.00 of the Zend license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| http://www.zend.com/license/2_00.txt. |
|
|
| If you did not receive a copy of the Zend license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@zend.com so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef incl_HPHP_STRING_UTIL_H_
|
|
#define incl_HPHP_STRING_UTIL_H_
|
|
|
|
#include "hphp/runtime/base/complex_types.h"
|
|
|
|
namespace HPHP {
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
extern const StaticString k_HPHP_TRIM_CHARLIST;
|
|
|
|
/**
|
|
* Utility string functions. These are mostly wrappers around zend/ string
|
|
* functions, but in a safe and convenient form.
|
|
*/
|
|
class StringUtil {
|
|
public:
|
|
enum class ToUpperType {
|
|
All,
|
|
First,
|
|
Words
|
|
};
|
|
|
|
enum class ToLowerType {
|
|
All,
|
|
First,
|
|
Words
|
|
};
|
|
|
|
enum class TrimType {
|
|
Left = 1,
|
|
Right = 2,
|
|
Both = 3
|
|
};
|
|
|
|
enum class PadType {
|
|
Left = 0,
|
|
Right = 1,
|
|
Both = 2
|
|
};
|
|
|
|
enum class QuoteStyle {
|
|
Double = 2, // k_ENT_COMPAT: escape double quotes only
|
|
Both = 3, // k_ENT_QUOTES: escape both double and single quotes
|
|
No = 0, // k_ENT_NOQUOTES: leave all quotes alone
|
|
FBUtf8 = 4,
|
|
FBUtf8Only = 8
|
|
};
|
|
|
|
public:
|
|
/**
|
|
* Manipulations. Note, all these functions will create a new string than
|
|
* modifying input, although names of these functions sound like mutating.
|
|
*/
|
|
static String ToLower(CStrRef input, ToLowerType type = ToLowerType::All);
|
|
static String ToUpper(CStrRef input, ToUpperType type = ToUpperType::All);
|
|
static String Trim(CStrRef input, TrimType type = TrimType::Both,
|
|
CStrRef charlist = k_HPHP_TRIM_CHARLIST);
|
|
static String Pad(CStrRef input, int final_length,
|
|
CStrRef pad_string = " ", PadType type = PadType::Right);
|
|
static String Reverse(CStrRef input);
|
|
static String Repeat(CStrRef input, int count);
|
|
static String Shuffle(CStrRef input);
|
|
static String StripHTMLTags(CStrRef input, CStrRef allowable_tags = "");
|
|
static String WordWrap(CStrRef input, int width,
|
|
CStrRef wordbreak = "\n", bool cut = false);
|
|
|
|
/**
|
|
* Split/joins.
|
|
*/
|
|
static Variant Explode(CStrRef input, CStrRef delimiter,
|
|
int limit = 0x7FFFFFFF);
|
|
static String Implode(CArrRef items, CStrRef delim); // == Join()
|
|
static Variant Split(CStrRef str, int split_length = 1);
|
|
static Variant ChunkSplit(CStrRef body, int chunklen = 76,
|
|
CStrRef end = "\r\n"); // for email (rfc822/2822)
|
|
|
|
/**
|
|
* Encoding/decoding.
|
|
*/
|
|
static String CEncode(CStrRef input, CStrRef charlist);
|
|
static String CDecode(CStrRef input);
|
|
static String SqlEncode(CStrRef input);
|
|
static String SqlDecode(CStrRef input);
|
|
static String RegExEncode(CStrRef input);
|
|
static String HtmlEncode(CStrRef input, QuoteStyle quoteStyle,
|
|
const char *charset, bool nbsp);
|
|
static String HtmlEncodeExtra(CStrRef input, QuoteStyle quoteStyle,
|
|
const char *charset, bool nbsp, Array extra);
|
|
static String HtmlDecode(CStrRef input, QuoteStyle quoteStyle,
|
|
const char *charset, bool all);
|
|
static String QuotedPrintableEncode(CStrRef input);
|
|
static String QuotedPrintableDecode(CStrRef input);
|
|
static String HexEncode(CStrRef input);
|
|
static String HexDecode(CStrRef input);
|
|
static String UUEncode(CStrRef input);
|
|
static String UUDecode(CStrRef input);
|
|
static String Base64Encode(CStrRef input);
|
|
static String Base64Decode(CStrRef input, bool strict = false);
|
|
static String UrlEncode(CStrRef input, bool encodePlus = true);
|
|
static String UrlDecode(CStrRef input, bool decodePlus = true);
|
|
|
|
/**
|
|
* Formatting.
|
|
*/
|
|
static String MoneyFormat(const char *format, double value);
|
|
|
|
/**
|
|
* Hashing
|
|
*/
|
|
static String Translate(CStrRef input, CStrRef from, CStrRef to);
|
|
static String ROT13(CStrRef input);
|
|
static int64_t CRC32(CStrRef input);
|
|
static String Crypt(CStrRef input, const char *salt = "");
|
|
static String MD5(CStrRef input, bool raw = false);
|
|
static String SHA1(CStrRef input, bool raw = false);
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
}
|
|
|
|
#endif // incl_HPHP_STRING_UTIL_H_
|