文字数を取得

ソースコード

	$len=mb_strlen("いろはにほ");
	var_dump($len);
	

var_dump出力
	int 5


文字列の置換 | str_replace

	$str1 = 'あかいいぬとみどりのいぬはすきですか。';
	$str2 = str_replace('いぬ', 'タヌキ', $str1);
	echo $str2; // → あかいタヌキとみどりのタヌキはすきですか。
	

対象文字列に検索文字列が存在するかチェック

strposは対象文字列の中で検索文字列が最初に現れる位置を出力する関数。
preg_match関数とstrstr関数よりも速い。


	if(strpos('ヤンバルクイナX','クイナ')!==false){
		echo '存在する';
	}
	


先頭の一文字を取得 | 先頭のn文字

先頭の一文字を取得

	$str=mb_substr('あいうえお',0,1);
	var_dump($str);	
	

var_dump出力
	string 'あ' (length=3)


先頭の3文字を取得

	$str=mb_substr('あいうえお',0,3);
	var_dump($str);	
	

var_dump出力
	string 'あいう' (length=9)


末尾の一文字を取得 | 末尾のn文字

末尾の一文字を取得

	$str=mb_substr('あいうえお',-1);
	var_dump($str);	
	

var_dump出力
	string 'お' (length=3)


末尾の3文字を取得

	$str=mb_substr('あいうえお',-3);
	var_dump($str);	
	

var_dump出力
	string 'うえお' (length=9)


文字列を左側から印文字を検索し、左側の文字を切り出す

ソースコード

	<?php 
	$str = "赤いキツネと緑のキツネはうどんではない。";
	$str2 = stringLeft($str,'キツネ');
	echo $str.'<br>';
	echo $str2.'<br>';
	
	/**
	 * 文字列を左側から印文字を検索し、左側の文字を切り出す。
	 * @param $s 対象文字列
	 * @param $mark 印文字
	 * @return 印文字から左側の文字列
	 */
	function stringLeft($s,$mark){
	
		if ($s==null || $s==""){
			return $s;
		}
		$a=strpos($s,$mark);
		if($a==null && $a!==0){
			return "";
		}
		$s2=substr($s,0,$a);
		return $s2;
	}
	?>
	

出力
	赤いキツネと緑のキツネはうどんではない
	赤い
	


文字列を左側から印文字を検索し、右側の文字を切り出す

ソースコード

	$str = "赤いキツネと緑のキツネはうどんではない。";
	$str2 = stringRight($str,'キツネ');
	echo $str.'<br>';
	echo $str2.'<br>';
	
	/**
	 * 文字列を左側から印文字を検索し、右側の文字を切り出す。
	 * @param $s 対象文字列
	 * @param $mark 印文字
	 * @return 印文字から右側の文字列
	 */
	function stringRight($s,$mark){
		if ($s==null || $s==""){
			return $s;
		}
		
		$a=strpos($s,$mark);
		if($a==null && $a!==0){
			return "";
		}
		$s2=substr($s,$a + strlen($mark),strlen($s));
		return $s2;
	}
	?>
	

出力
	赤いキツネと緑のキツネはうどんではない
	と緑のキツネはうどんではない
	


文字列を右側から印文字を検索し、左側の文字を切り出す

ソースコード

	<?php 
	$str = "赤いキツネと緑のキツネはうどんではない。";
	$str2 = stringLeftRev($str,'キツネ');
	echo $str.'<br>';
	echo $str2.'<br>';
	
	/**
	 * 文字列を右側から印文字を検索し、左側の文字を切り出す。
	 * @param $s 対象文字列
	 * @param $mark 印文字
	 * @return 印文字から左側の文字列
	 */
	function stringLeftRev($s,$mark){

		if ($s==null || $s==""){
			return $s;
		}
		$a = strrpos($s,$mark);
		if($a==null && $a!==0){
			return "";
		}
		$s2=substr($s,0,$a);
		return $s2;
		
	}
	?>
	

出力
	赤いキツネと緑のキツネはうどんではない。
	赤いキツネと緑の
	


文字列を右側から印文字を検索し、右側の文字を切り出す

ソースコード

	<?php 
	$str = "赤いキツネと緑のキツネはうどんではない。";
	$str2 = stringRightRev($str,'キツネ');
	echo $str.'<br>';
	echo $str2.'<br>';
	
	/**
	 * 文字列を右側から印文字を検索し、右側の文字を切り出す。
	 * @param $s 対象文字列
	 * @param $mark 印文字
	 * @return 印文字から右側の文字列
	 */
	function stringRightRev($s,$mark){
		if ($s==null || $s==""){
			return $s;
		}
	
		$a = strrpos($s,$mark);
		if($a==null && $a!==0){
			return "";
		}
		$s2=substr($s,$a + strlen($mark),strlen($s));

		return $s2;
	}
	?>
	

出力
	赤いキツネと緑のキツネはうどんではない。
	はうどんではない。
	


末尾の一文字を削る

ソースコード

	$str_a="いろはにほ";
	$str=mb_substr($str_a,0,mb_strlen($str_a)-1);
	echo $str;
	

echo出力
	いろはに


先頭の一文字を削る

ソースコード

	$str = mb_substr('大タヌキ',1); // 先頭の一文字を削る→タヌキ
	


文字幅を適当に切りそろえる(文字丸め) | mb_strimwidth

mb_strimwidth関数を使えば長い文字を切りそろえることができる。
全角は2文字として数えられるため、見た目の長さを揃えたいときに便利。

ソースコード

	echo mb_strimwidth("いろはにほへとちりぬのをわかよたれそつねならむ", 0, 10, "...");
	echo mb_strimwidth("Over the mountains, far to travel, people say, Happiness dwells", 0, 10, "...");
	

echo出力
	いろは...
	Over th...
	



先頭を大文字にする

サンプル

	$hoge = ucfirst('neko');
	echo $hoge; // → Neko
	

応用

	$tblName="nekos";
	$tblName = mb_substr($tblName,0,mb_strlen($tblName)-1);
	$tblName = ucfirst($tblName);
	echo $tblName;// → Neko
	



2つの印文字に挟まれた文字を取得する

ソースコード


	$text = "XXテスト漢字ネコテストAAA";
	
	$str1 = getHasami($text,'漢字','テスト');
	var_dump($str1);
	
	
	/**
	 * 2つの印文字に挟まれた文字を取得する
	 * @param string $targetStr 対象文字列
	 * @param string $mark1 印文字1
	 * @param string $mark2 印文字2
	 * @return 印文字1と印文字2に挟まれた文字列
	 */
	function getHasami($targetStr,$mark1,$mark2){
		
		$a1 = mb_strpos($targetStr,$mark1) + mb_strlen($mark1);
		$a2 = mb_strpos($targetStr,$mark2,$a1);
	
		$hasami = mb_substr($targetStr,$a1,$a2-$a1);
		
		return $hasami;
	}
	

出力


	string 'ネコ' (length=6)
	

2つの印文字に挟まれた文字を置換する

ソースコード


	$text = "XXテスト漢字ネコテストAAA";
	
	$str2 = replaceHasami($text,'漢字','テスト','abc');
	var_dump($str2);
	
	
	/**
	 * 2つの印文字に挟まれた文字を置換する
	 * @param string $targetStr 対象文字
	 * @param string $mark1 印文字1
	 * @param string $mark2 印文字2
	 * @param string $replaceStr 置き換え文字
	 * @return 置換後の文字
	 * 
	 * @note
	 * 印文字が対象文字に存在しない場合は、置換は行わず、対象文字をそのまま返す。
	 */
	function replaceHasami($targetStr,$mark1,$mark2,$replaceStr){
		
		if(empty($targetStr)){
			return $targetStr;
		}
		
		$a1 = mb_strpos($targetStr,$mark1);
		if($a1===false){
			return $targetStr;
		}
	
		$markLen1 = mb_strlen($mark1);
		$s1 = mb_substr($targetStr,0,$a1 + $markLen1);
		
		$targetStrLen = mb_strlen($targetStr);
		$s2 = mb_substr($targetStr,$a1 + $markLen1);
		
		$a2 = mb_strpos($s2,$mark2);
		if($a2===false){
			return $targetStr;
		}
		$s2 = mb_substr($s2,$a2);
		
		$s3 = $s1.$replaceStr.$s2;
	
		return $s3;
	}
	

出力


	string 'XXテスト漢字abcテストAAA' (length=32)