CodeIgniter4 文本輔助函數(shù)

2020-08-18 11:24 更新

文本輔助函數(shù)文件包括了一系列有助于處理文本的函數(shù)

加載輔助函數(shù)

該系列函數(shù)通過以下方式加載:

helper('text');

可用函數(shù)列表

以下函數(shù)可用:

random_string([$type = 'alnum'[, $len = 8]])

param string $type: 需要隨機(jī)輸出的類型
param int $len: 輸出的字符串長(zhǎng)度
returns: 一個(gè)隨機(jī)字符串
rtype: string

基于類型和長(zhǎng)度生成一個(gè)隨機(jī)字符串。

對(duì)于創(chuàng)建密碼或隨機(jī)哈希等非常有用。

第一個(gè)參數(shù)給定字符串類型,第二個(gè)參數(shù)給定字符串長(zhǎng)度,可使用以下類型:

  • alpha: 僅有大小寫字母構(gòu)成的字符串
  • alnum: 含有大小寫字母和數(shù)字的字符串
  • basic: 基于 mt_rand() 方法組成的隨機(jī)數(shù)(忽略長(zhǎng)度)
  • numeric: 數(shù)字類型的字符串
  • nozero: 數(shù)字類型字符串,其中不含有零
  • md5: 基于 md5() 的加密隨機(jī)數(shù)(固定長(zhǎng)度32位)
  • sha1: 基于 sha1() 的加密隨機(jī)數(shù)(固定長(zhǎng)度40位)
  • crypto: 基于 random_bytes() 的隨機(jī)字符串

用例如下:

echo random_string('alnum', 16);

increment_string($str[, $separator = '_'[, $first = 1]])

param string $str: 輸入的字符串
param string $separator: 用于增加一個(gè)數(shù)字的分隔符
param int $first: 起始數(shù)字
returns: 遞增字符串
rtype: string

通過將一個(gè)每次在尾部遞增數(shù)字的方式,遞增一個(gè)字符串。用于創(chuàng)建”拷貝”或者用于擁有唯一標(biāo)題或簡(jiǎn)介的文件或數(shù)據(jù)庫(kù)內(nèi)容。

用例如下:

echo increment_string('file', '_'); // "file_1"
echo increment_string('file', '-', 2); // "file-2"
echo increment_string('file_4'); // "file_5"

alternator($args)

參數(shù): $args (mixed) – 參數(shù)的一個(gè)變量數(shù)字
返回: 變化后的字符串
返回類型: mixed

允許在進(jìn)行循環(huán)時(shí),兩個(gè)或多個(gè)項(xiàng)目之間交換變化,例如:

for ($i = 0; $i < 10; $i++)
{
        echo alternator('string one', 'string two');
}

如果你需要的話也可以增加盡可能多的參數(shù),在下一次迭代時(shí),下一個(gè)項(xiàng)目將會(huì)被返回:

for ($i = 0; $i < 10; $i++)
{
        echo alternator('one', 'two', 'three', 'four', 'five');
}

注解

多個(gè)獨(dú)立函數(shù)調(diào)用時(shí),只需要不傳參,不用重新初始化直接調(diào)用即可。

reduce_double_slashes($str)

參數(shù): $str (string) – 輸入字符串
返回: 格式化斜線后的字符串
返回類型: string

將一個(gè)字符串中的雙斜線轉(zhuǎn)變?yōu)閱涡本€,除了在 URL 協(xié)議前綴中的,比如 http://

例如:

$string = "http://example.com//index.php";
echo reduce_double_slashes($string); // 返回 "http://example.com/index.php"

strip_slashes($data)

參數(shù): $data (mixed) – 輸入的字符串或者字符串?dāng)?shù)組
返回: 去除斜杠后的字符串(數(shù)組)
返回類型: mixed

從一組字符串中去除所有斜杠

例如:

$str = [
        'question' => 'Is your name O\'reilly?',
        'answer'   => 'No, my name is O\'connor.'
];


$str = strip_slashes($str);

以上會(huì)返回?cái)?shù)組:

[
        'question' => "Is your name O'reilly?",
        'answer'   => "No, my name is O'connor."
];

注解

基于歷史原因,該函數(shù)也接受字符串類型的輸入。這樣看起來就跟 stripslashes() 函數(shù)的別名一樣 alias for stripslashes().

reduce_multiples($str[, $character = ''[, $trim = FALSE]])

參數(shù): $str (string) – 需要搜索的文本
$character (string) – 需要簡(jiǎn)化的字符
$trim (bool) – 是否在字符串首位同時(shí)去除指定的字符
返回: 簡(jiǎn)化后的字符串
返回類型: string

將多個(gè)連續(xù)出現(xiàn)的相同字符簡(jiǎn)化為一個(gè),例如:

$string = "Fred, Bill,, Joe, Jimmy";
$string = reduce_multiples($string,","); //結(jié)果 "Fred, Bill, Joe, Jimmy"

如果第三個(gè)參數(shù)被設(shè)為 TRUE 的話,該函數(shù)就會(huì)將首部和尾部出現(xiàn)的該字符串同時(shí)去除,例如:

$string = ",Fred, Bill,, Joe, Jimmy,";
$string = reduce_multiples($string, ", ", TRUE); //結(jié)果是 "Fred, Bill, Joe, Jimmy"

quotes_to_entities($str)

參數(shù): $str (string) – 輸入的字符串
返回: 擁有轉(zhuǎn)義符號(hào)的字符串轉(zhuǎn)換后的 HTML 實(shí)體
返回類型: string

將一個(gè)單引號(hào)或雙引號(hào)轉(zhuǎn)換為對(duì)應(yīng)的 HTML 實(shí)體,例如:

$string = "Joe's \"dinner\"";
$string = quotes_to_entities($string); //結(jié)果是 "Joe's "dinner""

strip_quotes($str)

參數(shù): $str (string) – 輸入字符串
返回: 去除了引號(hào)的字符串
返回類型: string

從字符串中去除單雙引號(hào),例如:

$string = "Joe's \"dinner\"";
$string = strip_quotes($string); //結(jié)果是 "Joes dinner"

word_limiter($str[, $limit = 100[, $end_char = '…']])

參數(shù): $str (string) – 輸入字符串
$limit (int) – 限制
$end_char (string) – 結(jié)尾字符(通常是省略號(hào))
返回: 限制了單詞的字符串
返回類型: string

根據(jù) 單詞 的長(zhǎng)度截?cái)嘧址?,例?

$string = "Here is a nice text string consisting of eleven words.";
$string = word_limiter($string, 4);
// Returns:  Here is a nice

第三個(gè)參數(shù)是一個(gè)可選的字符串后綴。默認(rèn)是一個(gè)省略號(hào)。

character_limiter($str[, $n = 500[, $end_char = '…']])

參數(shù): $str (string) – 輸入字符串
$n (int) – 字符數(shù)量
$end_char (string) – 結(jié)尾字符
返回: 限定了字符的字符串
返回類型: string

根據(jù)給定的 字符 的數(shù)量截?cái)嘧址?。該方法將?huì)保持單詞的完整性,因此字符串長(zhǎng)度可能會(huì)比你給定的略多或略少

例如:

$string = "Here is a nice text string consisting of eleven words.";
$string = character_limiter($string, 20);
// 返回:  Here is a nice text string

第三個(gè)參數(shù)是一個(gè)可選的字符串后綴,未定義則默認(rèn)使用省略號(hào)

注解

如果你想截?cái)嗤耆恢麻L(zhǎng)度的字符串,參照下方的 函數(shù) ellipsize()

ascii_to_entities($str)

param string $str: 輸入字符串
returns: 一個(gè)將 ASCII 值轉(zhuǎn)化為實(shí)體的字符串
rtype: string

將 ASCII 碼轉(zhuǎn)化為字符實(shí)體,包括可能導(dǎo)致 web 頁面中出現(xiàn)問題的高位 ASCII 碼以及一些 Word 字符串。 通過這一方法可以使得這些字符無論是瀏覽器設(shè)置或是存儲(chǔ)于數(shù)據(jù)庫(kù)中都可以正確地顯示。

不過該方法依賴于你瀏覽器所支持的字符集,因此不一定100%可靠。 不過在大多數(shù)情況下,該方法可以正確識(shí)別非正常類型的字符(例如方言字符等)

例如:

$string = ascii_to_entities($string);

entities_to_ascii($str[, $all = TRUE])

參數(shù): $str (string) – 輸入字符串
$all (bool) – 是否同樣轉(zhuǎn)換非安全的實(shí)體
返回: 將 HTML 實(shí)體轉(zhuǎn)化為 ASCII 碼的字符串
返回類型: string

該函數(shù)與 ascii_to_entities() 相反,將字符實(shí)體轉(zhuǎn)換為 ASCII 碼

convert_accented_characters($str)

參數(shù): $str (string) – 輸入字符串
返回: 一個(gè)字符串,其中方言字符已進(jìn)行過轉(zhuǎn)換
返回類型: string

將高位 ASCII 碼轉(zhuǎn)化為等同功能的低位 ASCII 碼。當(dāng)面對(duì)只有標(biāo)準(zhǔn) ASCII 碼可以安全使用的情況,將非英語的字符進(jìn)行轉(zhuǎn)換,比如在 URL 中

例如:

$string = convert_accented_characters($string);

注解

該函數(shù)利用配置文件 app/Config/ForeignCharacters.php 來定義并進(jìn)行數(shù)組翻譯。

ord_censor($str, $censored[, $replacement = ''])

param string $str: 輸入字符串
param array $censored: 一系列需要被探測(cè)的有問題的單詞
param string $replacement: 用于替換問題單詞的字符串
returns: 探測(cè)后的字符串
rtype: string

用于檢測(cè)文本字符串中的敏感詞。第一個(gè)參數(shù)為原有的字符串,第二個(gè)是一個(gè)含有你需要攔截的敏感詞的數(shù)組。第三個(gè)參數(shù)(可選)為需要用于替換的單詞。 如果不聲明的話就會(huì)用井號(hào)替換: ###

例如:

$disallowed = ['darn', 'shucks', 'golly', 'phooey'];
$string     = word_censor($string, $disallowed, 'Beep!');

highlight_code($str)

param string $str: 輸入字符串
returns: HTML 格式代碼高亮的字符串
rtype: string

將一個(gè)代碼字符串 (PHP, HTML, 等)加上顏色。例如:

        $string = highlight_code($string);


該函數(shù)使用了 PHP 的 ``highlight_string()`` 方法,因此使用的顏色是在你的 php.ini 文件中定義的。

highlight_phrase($str, $phrase[, $tag_open = '<mark>'[, $tag_close = '</mark>']])

param string $str: 輸入字符串
param string $phrase: 高亮的片段
param string $tag_open: 用于高亮的開括號(hào)
param string $tag_close: 用于高亮的閉括號(hào)
returns: 通過 HTML 進(jìn)行片段高亮后的字符串
rtype: string

在一個(gè)文本字符串中高亮一個(gè)片段。第一個(gè)參數(shù)是原本的字符串,第二個(gè)參數(shù)是你需要高亮的片段。 第三個(gè)第四個(gè)參數(shù)包含你需要用于包裹高亮片段的 HTML 標(biāo)簽。

例如:

$string = "Here is a nice text string about nothing in particular.";
echo highlight_phrase($string, "nice text", '<span style="color:#990000;">', '</span>');

以上將會(huì)輸出:

Here is a <span style="color:#990000;">nice text</span> string about nothing in particular.

注解

該函數(shù)默認(rèn)使用 <strong& 標(biāo)簽。 舊版本的瀏覽器可能不支持新型 HTML5 的格式標(biāo)簽,因此我們推薦你將下述 CSS 加入到你的樣式表中,如果你需要支持這類瀏覽器的話:


mark {
background: #ff0;
color: #000;
};

word_wrap($str[, $charlim = 76])

param string $str: 輸入字符串
param int $charlim: 字符限制
returns: 單詞換行過的字符串
rtype: string

將一個(gè)文本以指定的字符長(zhǎng)度進(jìn)行換行,并保持單詞完整性

例如:

$string = "Here is a simple string of text that will help us demonstrate this function.";
echo word_wrap($string, 25);


// 輸出如下:
// Here is a simple string
// of text that will help us
// demonstrate this
// function.

過長(zhǎng)的單詞會(huì)被截?cái)?,不過 URL 不會(huì)

ellipsize($str, $max_length[, $position = 1[, $ellipsis = '…']])

param string $str: 輸入字符串
param int $max_length: 字符串長(zhǎng)度限制
param mixed $position: 需要截?cái)嗟奈恢茫ㄕ麛?shù)或浮點(diǎn)數(shù))
param string $ellipsis: 作為省略的標(biāo)記符
returns: 省略后的字符串
rtype: string

該函數(shù)將去除字符串中的標(biāo)記并將其截?cái)酁橹付ㄩL(zhǎng)度,同時(shí)加上一個(gè)省略標(biāo)記符

第一個(gè)參數(shù)是需要省略的字符串,第二個(gè)是在輸出的字符串中的字符長(zhǎng)度。第三個(gè)參數(shù)是在省略后的字符串中,省略標(biāo)記符號(hào)是否需要從0-1,從左到右的方式出現(xiàn)。 例如,值為1時(shí),就會(huì)在右邊,0.5就是中間,0就是在左邊

第四個(gè)可選的參數(shù)是省略符號(hào)類型,默認(rèn)情況下會(huì)插入一個(gè) …

例如:

$str = 'this_string_is_entirely_too_long_and_might_break_my_design.jpg';
echo ellipsize($str, 32, .5);

結(jié)果:

this_string_is_e…ak_my_design.jpg

excerpt($text, $phrase = false, $radius = 100, $ellipsis = '...')

param string $text: 需要截取摘要的文本
param string $phrase: 需要截取的文本附近的片段或單詞
param int $radius: 在片段前后截取的字符數(shù)量
param string $ellipsis: 省略標(biāo)記符
returns: 摘要.
rtype: string

該函數(shù)會(huì)取出指定 $phrase 前后各 $radius 個(gè)數(shù)量的字符。

第一個(gè)參數(shù)是需要截取摘要的文本,第二個(gè)是需要截取的中心單詞或片段。 第三個(gè)參數(shù)是需要截取的數(shù)量。如果不傳 $phrase 參數(shù)的話就會(huì)從頭開始獲取 $radius 個(gè)字符并加上省略標(biāo)記符

例如:

$text = 'Ut vel faucibus odio. Quisque quis congue libero. Etiam gravida
eros lorem, eget porttitor augue dignissim tincidunt. In eget risus eget
mauris faucibus molestie vitae ultricies odio. Vestibulum id ultricies diam.
Curabitur non mauris lectus. Phasellus eu sodales sem. Integer dictum purus
ac enim hendrerit gravida. Donec ac magna vel nunc tincidunt molestie sed
vitae nisl. Cras sed auctor mauris, non dictum tortor. Nulla vel scelerisque
arcu. Cras ac ipsum sit amet augue laoreet laoreet. Aenean a risus lacus.
Sed ut tortor diam.';


echo excerpt($str, 'Donec');

輸出:

... non mauris lectus. Phasellus eu sodales sem. Integer dictum purus ac
enim hendrerit gravida. Donec ac magna vel nunc tincidunt molestie sed
vitae nisl. Cras sed auctor mauris, non dictum ...
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)