// とても退屈なので、突然思いつき、PHP でカプセル化された関数の一部を PHP を使用して再実装したいと思いました。
//したがって、次のコードは主に PHP でいくつかの文字列処理関数を実装し、さらにいくつかの PHP も実装します。
// いいえ、しかし同じ文字列処理関数は他の言語でも実装できます。
// たとえば、C/VBScript/Perl などを使用すると、独自の関数ライブラリを作成できます。
// 以下の関数は、学習のみを目的としており、必ずしも正常に実行されるとは限りません。
//
// 特別な記載がない限り、すべてheiyelurenのオリジナル作品です。 機能を使用する場合は作者情報を保存してください。
/**
* 文字列関数の再構築
*
* 著作権 (c) 2005 heiyeluren < [email protected] >
* 著者: heiyeluren < [email protected] >
* $Id: StringFunctions.php,v 0.1 e 2005-5-29 23:21 heiyeluren Exp $
**/
// {{{ strlen()
/**
* 文字列の長さをカウントします
*
* @param string $str にはカウント長の文字列変数が必要です
* @return int リターンカウントの結果
* @バージョンv0.1
* @create 2005-5-24
* @modified 2005-5-24
* @作者 heiyeluren < [email protected] >
*/
関数 strlen1($str)
{
if ($str == '')
0を返します。
$count = 0;
一方 (1)
{
if ($str[$count] != NULL)
{
$count++;
続く;
}
それ以外
壊す;
}
$count を返します。
}
// }}}
// {{{ substr()
/**
* 部分文字列を取得します
*
* @param string $str はサブ文字列変数を取得する必要があります
* @param int $start start サブ文字列を取得
* @param int $length は文字列の長さを取得する必要があります
* @return string サブ文字列を返す
* @バージョンv0.2
* @create 2005-5-24
* @modified 2005-5-25
* @作者 heiyeluren < [email protected] >
*/
関数 substr1($str, $start, $length=0)
{
if ($str == '')
戻る;
if ($start > strlen($str))
戻る;
if (($length != NULL) && ($start > 0) && ($length > strlen($str)-$start))
戻る;
if (($length != NULL) && ($start < 0) && ($length > strlen($str)+$start))
戻り値;
if ($length == NULL)
$length = (strlen($str) - $start);
if ($start < 0)
{
for ($i=(strlen($str)+$start); $i<(strlen($str)+$start+$length); $i++)
{
$substr .= $str[$i];
}
if
($length > 0)
{
for ($i=$start; $i<($start+$length); $i++)
{
$substr .= $str[$i];
}
if
($length < 0)
{
for ($i=$start; $i<(strlen($str)+$length); $i++)
{
$substr .= $str[$i];
}
}
$substr を返します。
}
// }}}
// {{{ strrev()
/**
* 文字列の順序を逆にする
*
* @param string $str には反転文字列変数が必要です
* @return 文字列反転文字列
* @バージョン v0.1 www.knowsky.com
* @create 2005-5-24
* @modified 2005-5-24
* @作者 heiyeluren < [email protected] >
*/
関数 strrev1($str)
{
if ($str == '')
0を返します。
for ($i=(strlen($str)-1); $i>=0; $i--)
{
$rev_str .= $str[$i];
}
$rev_str を返します。
}
// }}}
// {{{ strcmp()
/**
*文字列比較
*
* @param string $s1 最初の文字列
* @param string $s2 2番目の文字列
* @return int return -1,str1 < str2; return 1、str1 > str2、str1 = str2、
* 0 を返す、その他、false を返す
* @バージョンv0.1
* @create 2005-5-24
* @modified 2005-5-24
* @作者 heiyeluren < [email protected] >
*/
関数 strcmp1($s1, $s2)
{
if (strlen($s1) < strlen($s2))
-1 を返します。
if (strlen($s1) > strlen($s2))
1 を返します
($i=0; $i<strlen($s1); $i++)
{
if ($s1[$i] == $s2[$i])
続く;
それ以外
false を返します。
}
0を返します。
}
// }}}
// {{{ strchr()、strstr()、strpos()
/**
* 文字列の最初の出現を検索します
*
* @param string $str 親文字列
* @param string $substr は部分文字列と一致する必要があります
* @return int return 親文字列の先頭でサブ文字列を検索します。
* 見つからない場合は false を返します
* @バージョンv0.4
* @create 2005-5-24
* @modified 2005-5-29
* @作者 heiyeluren < [email protected] >
*/
関数 strchr1($str, $substr)
{
$m = strlen($str);
$n = strlen($substr);
if ($m < $n)
($i=0; $i<=($m-$n+1); $i++) の場合は
false を返します。
{
$sub = substr($str, $i, $n);
if (strcmp($sub, $substr) == 0)
$i を返します。
}
false を返します。
}
// }}}
// {{{ str_replace()
/**
* 出現するすべての検索文字列を置換文字列に置き換えます。
*
* @param string $substr はサブ文字列変数を置き換える必要があります
* @param string $newsubstr 新しいサブ文字列
* @param string $str 親文字列を操作します
* @return string 新しい親文字列の後に置換を返します
* @バージョンv0.2
* @create 2005-5-24
* @modified 2005-5-29
* @作者 heiyeluren < [email protected] >
*/
関数 str_replace1($substr, $newsubstr, $str)
{
$m = strlen($str);
$n = strlen($substr);
$x = strlen($newsubstr);
if (strchr($str, $substr) == false)
($i=0; $i<=($m-$n+1); $i++) の場合は
false を返します。
{
$i = strchr($str, $substr);
$str = str_delete($str, $i, $n);
$str = str_insert($str, $i, $newstr);
}
$str を返します。
}
// }}}
/************ 次の文字列処理関数は PHP では使用できません。趣味で自分で書きました。 ***************/
// {{ { insert_str()、delete_str()、index_str()
/**
* 基本的な文字列操作
*
* @param string $str はサブ文字列変数を取得する必要があります
* @param int $start start サブ文字列を取得
* @param int $length は文字列の長さを取得する必要があります
* @return string サブ文字列を返す
* @バージョンv0.1
* @create 2005-5-24
* @modified 2005-5-24
* @作者 heiyeluren < [email protected] >
*/
関数 str_insert($str, $i, $substr)
{
for($j=0; $j<$i; $j++)
{
$startstr .= $str[$j];
}
for ($j=$i; $j<strlen($str); $j++)
{
$laststr .= $str[$j];
}
$str = ($startstr . $substr . $laststr);
$str を返します。
}
関数 str_delete($str, $i, $j)
{
for ($c=0; $c<$i; $c++)
{
$startstr .= $str[$c];
}
for ($c=($i+$j); $c<strlen($str); $c++)
{
$laststr .= $str[$c];
$
str = ($startstr . $laststr)
;
}
// }}}
// {{{ strcpy()
/**
* 文字列を置換するサブ文字列を指定して使用します
*
* @param string $str はサブ文字列変数を取得する必要があります
* @param int $start start サブ文字列を取得
* @param int $length は文字列の長さを取得する必要があります
* @return string サブ文字列を返す
* @バージョンv0.1
* @create 2005-5-27
* @modified 2005-5-27
* @作者 heiyeluren < [email protected] >
*/
関数 strcpy($s1, $s2)
{
if (strlen($s1) == NULL)
戻る;
if (!isset($s2))
戻り値;
for ($i=0; $i<strlen($s1); $i++)
{
$s2[] = $s1[$i];
}
$s2 を返します。
}
// }}}
// {{{ strcat()
/**
* 文字列を置換するサブ文字列を指定して使用します
*
* @param string $str はサブ文字列変数を取得する必要があります
* @param int $start start サブ文字列を取得
* @param int $length は文字列の長さを取得する必要があります
* @return string サブ文字列を返す
* @バージョンv0.1
* @create 2005-5-27
* @modified 2005-5-27
* @作者 heiyeluren < [email protected] >
*/
関数 strcat($s1, $s2)
{
if (!isset($s1))
戻る;
if (!isset($s2))
$newstr = $s2
を返します
。
}
// }}}
// {{{ php_encode()、php_decode()
/**
* 単純な文字列エンコード/デコード機能
*
* @param string $str コード/エンコード文字列変数が必要
* @return 文字列コード/文字列の後のエンコード
* @バージョンv0.2
* @create 2005-3-11
* @modified 2005-5-24
* @作者 heiyeluren < [email protected] >
*/
/* 文字列エンコード関数 */
関数php_encode($str)
{
if ($str=='' && strlen($str)>128)
false を返します;
for($i=0; $i<strlen($str); $i++)
{
$c = ord($str[$i]);
if ($c>31 && $c<107)
$c += 20;
if ($c>106 && $c<127)
$c -= 75;
$word = chr($c);
$s .= $word;
}
$s を返します。
}
/* 文字列デコード関数 */
関数php_decode($str)
{
if ($str=='' && strlen($str)>128)
false を返します;
for($i=0; $i<strlen($str); $i++)
{
$c = ord($word);
if ($c>106 && $c<127)
$c = $c-20;
if ($c>31 && $c<107)
$c = $c+75;
$word = chr($c);
$s .= $word;
}
$s を返します。
}
// }}}
// {{{ php_encrypt()、php_decrypt()
/**
* 単純な文字列暗号化/復号化機能
*
* @param string $str には暗号化文字列変数が必要です
* @return 文字列の後の暗号化/復号化
* @バージョンv0.1
* @create 2005-5-27
* @modified 2005-5-29
* @作者 heiyeluren < [email protected] >
*/
/* 暗号鍵を定義します */
$encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'
/* 文字列暗号化関数 */
関数php_encrypt($str)
{
グローバル $encrypt_key, $decrypt_key
if (strlen($str) == 0)
($i=0; $i<strlen($str); $i++) の場合は
false を返します
。
{
for ($j=0; $j<strlen($encrypt_key); $j++)
{
if ($str[$i] == $encrypt_key[$j])
{
$enstr .= $decrypt_key[$j];
壊す;
}
}
}
$enstr を返します。
}
/* 文字列復号化関数 */
関数php_decrypt($str)
{
グローバル $encrypt_key, $decrypt_key
if (strlen($str) == 0)
($i=0; $i<strlen($str); $i++) の場合は
false を返します
。
{
for ($j=0; $j<strlen($decrypt_key); $j++)
{
if ($str[$i] == $decrypt_key[$j])
{
$enstr .= $encrypt_key[$j];
壊す;
}
}
}
$enstr を返します。
}
// }}}
コードが明確でない場合は、blogchina 上の私のブログのリンクを確認することをお勧めします: