文字列を配列化する

str_splitで文字列を配列化できる。
ただし、日本語など2バイト文字コードには対応していない。

ソースコード

	$str = "Hello world!";
	$ary = str_split($str);
	var_dump($ary);
	

出力
	array (size=12)
	  0 => string 'H' (length=1)
	  1 => string 'e' (length=1)
	  2 => string 'l' (length=1)
	  3 => string 'l' (length=1)
	  4 => string 'o' (length=1)
	  5 => string ' ' (length=1)
	  6 => string 'w' (length=1)
	  7 => string 'o' (length=1)
	  8 => string 'r' (length=1)
	  9 => string 'l' (length=1)
	  10 => string 'd' (length=1)
	  11 => string '!' (length=1)
	


日本語文字列を配列化する

日本語など2バイト文字コードの文字列を配列化することができる。

ソースコード

	$str = "あなた自身の水溜めから水を,あなた自身の井戸から水の滴りを飲め";
	$ary = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
	var_dump($ary);
	

出力
	array (size=31)
	  0 => string 'あ' (length=3)
	  1 => string 'な' (length=3)
	  2 => string 'た' (length=3)
	  3 => string '自' (length=3)
	  4 => string '身' (length=3)
	  5 => string 'の' (length=3)
	  6 => string '水' (length=3)
	  7 => string '溜' (length=3)
	  8 => string 'め' (length=3)
	  9 => string 'か' (length=3)
	  10 => string 'ら' (length=3)
	  11 => string '水' (length=3)
	  12 => string 'を' (length=3)
	  13 => string ',' (length=3)
	  14 => string 'あ' (length=3)
	  15 => string 'な' (length=3)
	  16 => string 'た' (length=3)
	  17 => string '自' (length=3)
	  18 => string '身' (length=3)
	  19 => string 'の' (length=3)
	  20 => string '井' (length=3)
	  21 => string '戸' (length=3)
	  22 => string 'か' (length=3)
	  23 => string 'ら' (length=3)
	  24 => string '水' (length=3)
	  25 => string 'の' (length=3)
	  26 => string '滴' (length=3)
	  27 => string 'り' (length=3)
	  28 => string 'を' (length=3)
	  29 => string '飲' (length=3)
	  30 => string 'め' (length=3)
	


文字列中で仕様している文字を重複なしで列挙する

ソースコード

	$str = "あなた自身の水溜めから水を,あなた自身の井戸から水の滴りを飲め";
	$ary = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
	$ary=array_unique($ary);// 配列から重複値を除去する
	sort($ary); // 配列をソートする
	var_dump($ary);
	

出力
	array (size=18)
	  0 => string 'あ' (length=3)
	  1 => string 'か' (length=3)
	  2 => string 'た' (length=3)
	  3 => string 'な' (length=3)
	  4 => string 'の' (length=3)
	  5 => string 'め' (length=3)
	  6 => string 'ら' (length=3)
	  7 => string 'り' (length=3)
	  8 => string 'を' (length=3)
	  9 => string '井' (length=3)
	  10 => string '戸' (length=3)
	  11 => string '水' (length=3)
	  12 => string '溜' (length=3)
	  13 => string '滴' (length=3)
	  14 => string '自' (length=3)
	  15 => string '身' (length=3)
	  16 => string '飲' (length=3)
	  17 => string ',' (length=3)
	


文字列を小文字化する | strtolower,mb_strtolower

英語のアルファベットだけなら「strtolower」関数だけで十分である。
「mb_strtolower」関数を使うと、多言語のアルファベットにも対応する。
日本語は大文字、小文字の概念がないので無関係。

echo strtolower("ABCDE");abcde
echo strtolower("あいうABCあ");あいうabcあ
echo strtolower("Τάχιστη");Τάχιστη
echo mb_strtolower("ABCDE");abcde
echo mb_strtolower("あいうABCあ");あいうabcあ
echo mb_strtolower("Τάχιστη");τάχιστη

\n"; // $str = strtolower("あいうABCあ"); // echo "\n"; // $str = strtolower("Τάχιστη"); // echo "\n"; // $str = mb_strtolower("ABCDE"); // echo "\n"; // $str = mb_strtolower("あいうABCあ"); // echo "\n"; // $str = mb_strtolower("Τάχιστη"); // echo "\n"; ?>
echo strtolower(\"ABCDE\");{$str}
echo strtolower(\"あいうABCあ\");{$str}
echo strtolower(\"Τάχιστη\");{$str}
echo mb_strtolower(\"ABCDE\");{$str}
echo mb_strtolower(\"あいうABCあ\");{$str}
echo mb_strtolower(\"Τάχιστη\");{$str}

文字列を大文字化する | strtoupper,mb_strtoupper

英語のアルファベットだけなら「strtoupper」関数だけで十分である。
「mb_strtoupper」関数を使うと、多言語のアルファベットにも対応する。
日本語は大文字、大文字の概念がないので無関係。

echo strtoupper("abcd");ABCD
echo strtoupper("あいうabcあ");あいうABCあ
echo strtoupper("τάχιστη");τάχιστη
echo mb_strtoupper("abcd");ABCD
echo mb_strtoupper("あいうabcあ");あいうABCあ
echo mb_strtoupper("τάχιστη");ΤΆΧΙΣΤΗ

\n"; // $str = strtoupper("あいうabcあ"); // echo "\n"; // $str = strtoupper("τάχιστη"); // echo "\n"; // $str = mb_strtoupper("abcd"); // echo "\n"; // $str = mb_strtoupper("あいうabcあ"); // echo "\n"; // $str = mb_strtoupper("τάχιστη"); // echo "\n"; ?>
echo strtoupper(\"abcd\");{$str}
echo strtoupper(\"あいうabcあ\");{$str}
echo strtoupper(\"τάχιστη\");{$str}
echo mb_strtoupper(\"abcd\");{$str}
echo mb_strtoupper(\"あいうabcあ\");{$str}
echo mb_strtoupper(\"τάχιστη\");{$str}

文字列の両端からダブルクォートなどを除去する

	$str1 = trim($str,'"');
※ 数値やnullであっても文字列型に変換されるので注意

検証


	$xData = array('',null,'タヌキ','"トカゲ"','"プレコ','マダコ"',123,0);
	foreach($xData as $str){
		$str1 = trim($str,'"');
		var_dump($str1);
	}
	

出力
string '' (length=0)
	
string '' (length=0)
	
string 'タヌキ' (length=9)
	
string 'トカゲ' (length=9)
	
string 'プレコ' (length=9)
	
string 'マダコ' (length=9)
	
string '123' (length=3)
	
string '0' (length=1)
	

文字列の先頭または末尾から指定文字を除去する

先頭文字が「a」なら除去する

	$str = 'aトカゲa';
	$str= ltrim($str,'a');
	var_dump($str); // → トカゲa
	

末尾文字が「a」なら除去する

	$str = 'aトカゲa';
	$str= rtrim($str,'a');
	var_dump($str); // → aトカゲ
	

両側が「a」なら除去する

	$str = 'aトカゲa';
	$str= trim($str,'a');
	var_dump($str); // → トカゲ
	


文字列をShift-JISからUTF8に変換する | mb_convert_encoding

	$text = mb_convert_encoding($text , 'SJIS' , 'UTF-8');


データ配列内の値をまとめてShift-JISからUTF8に変換する | mb_convert_variables

	mb_convert_variables('UTF-8' , 'SJIS' , $arr);


検索する文字を含む行を取得する


	<?php 
	$text = "猫いろはにほへと\nちりノライヌぬるを\n馬わかよたれそつねならむ馬\nうゐのおく馬やまけふこえて\nあさきゆめみしゑひもせすん牛";
	
	$data = array('猫','ノライヌ','馬','牛','UMA');
	
	echo '<pre>' . $text . '</pre>';
	echo '<p>出力</p>';
	echo "<table class='tbl2'><thead><tr><th>検索文字</th><th>offset(先頭)</th><th>offset(末尾)</th><th>取得行</th></tr></thead><tbody>";
	
	foreach($data as $str){
		$info = getRowContainSearchStr($str,$text);
		$offset1 = $info['offset1'];
		$offset2 = $info['offset2'];
		$row_str = $info['row_str'];
		echo "<tr><td>{$str}</td><td>{$offset1}</td><td>{$offset2}</td><td>{$row_str}</td></tr>";
	}
	
	echo "</tbody></table>";
	
	/**
	 * 検索する文字を含む行を取得する
	 * 
	 * @note
	 * 検索する文字を含む改行コードにはさまれた文字列を取得する
	 * 
	 * @param string $search 検索文字
	 * @param string $subject 対象文字列
	 * @param int $offset 検索開始位置
	 * @param int $mode モード  0:行文字列のみ取得 , 1:行文字列や位置情報も取得する
	 * @param string $nl_code 改行コード
	 * @return string 検索文字を含む行
	 */
	function getRowContainSearchStr($search,$subject,$offset=0,$mode=0,$nl_code="\n"){
		$len = mb_strlen($subject);
		$a1 = mb_strpos($subject,$search,$offset);
		if($a1 === false){
			return array(
					'offset1' => null,
					'offset2' => null,
					'row_str' => null,
			);
		}
		$offset2 = mb_strpos($subject,$nl_code,$a1);
		if($offset2 === false) $offset2 = $len;
		$a2 = $offset2 - $len -1;
		$offset1 = mb_strripos($subject,$nl_code,$a2);
		if($offset1 === false) $offset1 = 0;
		$row_str = mb_substr($subject,$offset1,$offset2 - $offset1);
		
		return array(
				'offset1' => $offset1,
				'offset2' => $offset2,
				'row_str' => $row_str,
		);
	}
	
	?>
	

出力

検索文字offset(先頭)offset(末尾)取得行
08猫いろはにほへと
ノライヌ818 ちりノライヌぬるを
1832 馬わかよたれそつねならむ馬
4661 あさきゆめみしゑひもせすん牛
UMA