Yasuのブログ

北海道の大学生Yasuが、ライティングスキルとIT知識を高めるためにブログを始めました。

PHPのお勉強。3

☆文字列バイト数を得る

$変数 = strlen($引数);

UTF-8の場合、日本語1文字で3バイト.

 

☆文字列の分割

$変数 = substr(文字列, 文字列の位置, 文字列の長さ);

※勿論の事だが、文字列の位置は0から数える.

 

☆文字列の置換

$変数 = str_replace(置換対象文字, 置換文字, 文字列);

 

☆スペースの除去

$変数 = trim(文字列);

→なぜか出来ない.PHPマニュアル(http://php.net/manual/ja/function.trim.php)を参照すると、ASCIIでないと使えないのか?環境はUTF-8

エンコーディングに詳しいエ○い人助けて.

 

☆HTMLタグを無効にする

$変数 = htmlspecialchars(文字列, オプション);

オプションは、

ENT_COMPAT : 「"」のみ変換(デフォ)

ENT_QUOTES : 「"」,「'」どちらも変換

ENT_NOQUOTES : どちらも変換しない

 

変換できる文字は、&,",',<,>の5つ.

 

XSSに対する防衛策のひとつである.

 

☆HTMLタグを取り除く

$変数 = strip_tags(文字列, 許可するタグ);

 

☆改行コードの前に改行タグを付ける

$変数 = nl2br(文字列);

 

<?php

$string = "PHP

わかりやすすぎ

ワロタ";

 

$result = nl2br($string);

print $result;

print

?>

 

☆配列から文字列を作成

$変数 = implode(区切り文字, 配列);

implodeをjoinに変えても全く同じ結果を返す.

 

☆エラーになる文字をエスケープする

$変数 = addslashes(文字列);

¥" のように、エラーになる文字をエスケープしてエラーがでないようにしてくれる.

 

☆文字列から配列を作成

$変数 = explode(区切り文字, 文字列);

print_r($array) => 配列の構造を表示する.

 

配列から文字列 => implode

文字列から配列 => explode

となっている.覚える助けになるかもしれない.

 

Perlのように文字列を文字に区切って配列に格納する

<?php

$string = "hello";

$array = preg_split('//', $string , -1, PREG_SPLIT_NO_EMPTY);

print_r($array);

?>

 

☆配列の基礎

//array関数で作成

$配列 = array("文字列0", "文字列1", "文字列2");

 

//インデックス(番号)を指定して作成

$配列[0] = "文字列0";

$配列[1] = "文字列1";

$配列[2] = "文字列2";

 

//インデックスを省略して指定

$配列 = array(); //初期化

$配列 = "文字列0";

$配列 = "文字列1";

$配列[] = "文字列2";

 

//array関数にキーとデータを指定して連想配列を作成する

$配列 = array( "key0" => "文字列0", "key1" => "文字列1", "key2" => "文字列2");

 

//キーを指定して連想配列を作成する

$配列["key0"] = "文字列0";

$配列["key1"] = "文字列1";

$配列["key2"] = "文字列2";

 

//多次元配列

$配列[0] = array( "key0" => "文字列0", "key1" => "文字列1", "key2" => "文字列2");

$配列[1] = array( "key0" => "文字列0", "key1" => "文字列1", "key2" => "文字列2");

$配列[2] = array( "key0" => "文字列0", "key1" => "文字列1", "key2" => "文字列2");

 

☆配列のデータを全て変数に格納

$配列 = list($変数1, $変数2, $変数3);

 

☆配列内のデータ並べ替え

昇順ソート sort($配列);

降順ソート rsort($配列);

 

sort($配列, フラグ);

フラグは3種.

SORT_REGULAR 普通どおりにデータ比較

SORT_NUMERIC 数値としてデータ比較

SORT_STRING 文字列としてデータ比較

 

データとキーをソート

データ : asort,arsort

キー : ksort, krsort

 

☆エンコーディングの際の文字の昇順、降順の取り決め

「一般的に文字データをソート(文字コードの大小に従い昇順とか降順に並び換える事)をした際に、昇順でソートすると、英語の小文字(a-z),大文字(A-Z)、数字(0-9)の順序で並べられます。

一般的な感覚で言えば、数字,英大文字,英小文字という順番なのですが、コード体系上の関係で、順番が変な結果になります。」(引用元:http://blogs.yahoo.co.jp/kawajun_island/58976461.html

 

☆配列末尾にデータ追加

array_push($配列, "追加文字列");

array_push($配列, $追加変数);

 

☆配列末尾のデータ削除

$変数 = array_pop($配列);

変数に指定した配列の末尾データを代入.配列は取り出したデータ1つ分だけ短くなる.

 

☆配列先頭にデータ追加

array_unshift($配列, "追加文字列");

array_unshift($配列, "追加変数");

 

☆配列先頭のデータ削除

$変数 = array_shift($配列);

 インデックス番号は先頭に向かって1つずれる.

 

☆配列の結合

$配列 = array_merge($元の配列, $追加配列);

※結合する時同じキー(orインデックス)がある場合、array_merge関数では後から指定した配列の値で上書きされる.