文字列関数
- 関数一覧
-
echo() /
explode() /
implode() /
print() /
str_pad() /
str_repeat() /
str_replace() /
stristr() /
strlen() /
strpos() /
strrpos() /
strstr() /
strtr() /
substr() /
substr_count()
- 機能一覧
-
文字列を出力する /
文字列を分割・連結する /
文字列の長さを得る /
文字列A内の文字列Bの有無と位置を調べる /
文字列の一部を得る /
文字列内の特定の文字列を変換する /
文字列を他の文字列で埋めて固定長にする /
文字列の反復/文字列の出現回数
「echo
」と「print
」
文字列を出力するには、「echo
」もしくは「print
」を使います。いずれも関数ではなく、PHPの言語構造であるため、パラメータ(引数)は「( )(丸括弧)」で括る必要がありません。
似たような2つの関数(のようなもの)ですが、性質が若干異なっています。
echo()
- void echo(string 文字列[, string 文字列...])
- 指定された(1つ以上の)「文字列」を順番に出力します(連結して出力するのではありません)。
- 関数ではないので、引数を「( )(丸括弧)」で括る必要がありません。
- 注:関数の様に引数を「( )(丸括弧)」で括って使用した場合、「文字列」は1つしか指定できなくなります。
以下にサンプル。
<?php
$hode = "hodenasu";
echo "*** ", $hode, " ***", "<hr />";
function test(){
echo "エコー";
return "リターン";
}
#連結して出力
echo "[".test()."]<br />";
#順番に出力
echo "[", test(), "]<br />";
#別々に出力
echo "[";
echo test(); //「エコー」出力後に戻り値の「リターン」を出力
echo "]";
#これは無効(シンタックスエラーになります)
//echo("hode", "nasu");
/*出力結果
*** hodenasu ***
--------------------------------
エコー[リターン]
[エコーリターン]
[エコーリターン]
*/
?>
- 「
echo
」の省略形
-
「echo
」は、以下のように省略して書くことが出来ます。
<?php
$hode = "hodenasu";
echo "*** ", $hode, " ***";
?>
↓
<?php
$hode = "hodenasu";
?>
<?="*** ", $hode, " ***"?>
<!-- 出力結果
*** hodenasu ***
-->
省略形の時の開始タグは「<?php
」ではなく「<?
」である事に注意。
PageTop
print()
- bool print(string 文字列)
- 指定された「文字列」を出力します。
- 出力成功時に「TRUE」を、失敗時に「FALSE」を返します。
- 関数ではないので、引数を「( )(丸括弧)」で括る必要がありません。
以下にサンプル。
<?php
$hode = "hodenasu";
print "*** ".$hode." ***";
/*出力結果
*** hodenasu ***
*/
?>
「print
」が値(真偽値)を返すのに対して「echo
」は何も返しません。よって、「echo
」は値を必要とする所、制御文の条件式に使用したり、演算子による処理を行う事は出来ません。
PageTop
explode()
関数
- array explode(string 区切り文字列, string 文字列[, int 制限値])
- 「文字列」を「区切り文字列」で分割し、分割されたそれぞれの文字列を要素に持つ配列を返す関数です。
- 「制限値」が指定されると、その値が返される配列の要素数になり、最後の要素には分割されない残りの文字列が格納されます。
- 「文字列」に空文字列が指定されると、「FALSE」を返します。また、「文字列」内に「区切り文字列」が無い場合は、「文字列」を返します。
以下にサンプル。
<?php
$str = "dog|cat|cow";
$animals1 = explode("|", $str);
list($animals2[0], $animals2[1], $animals2[2]) = explode("|", $str);
list($animals3[], $animals3[], $animals3[]) = explode("|", $str);
?>
<pre>
<?php
print_r($animals1);
print_r($animals2);
print_r($animals3);
/*出力結果
Array
(
[0] => dog
[1] => cat
[2] => cow
)
Array
(
[2] => cow
[1] => cat
[0] => dog
)
Array
(
[0] => cow
[1] => cat
[2] => dog
)
*/
?>
</pre>
PageTop
implode()
関数
- string implode(string 連結文字列, array 配列)
- 「配列」の要素を「連結文字列」で連結した文字列を返す関数です。
以下にサンプル。
<?php
$str = "dog|cat|cow";
$animals = explode("|", $str);
echo implode(" ", $animals);
/*出力結果
dog cat cow
*/
?>
PageTop
strlen()
関数
- int strlen(string 文字列)
- 「文字列」の長さを返します。
- 「マルチバイト文字」を扱う場合は「
mb_strlen()
」関数を使用します。
以下にサンプル。
<?php
$str1 = "I am penniless!!";
$str2 = "大変です。";
echo strlen($str1), "<br />";
echo strlen($str2), "<br />";
echo mb_strlen($str1), "<br />";
echo mb_strlen($str2), "<br />";
/*出力結果
16
10
16
5
*/
?>
PageTop
strpos()
関数
- int strpos(string 文字列, string 部分文字列[, int 開始位置])
- 「文字列」内で、「部分文字列」が最初に現れる位置を返す(大文字と小文字を区別します)関数です。
- 「部分文字列」が存在しない場合は「FALSE」を返します。
- 「開始位置」を指定すると、それ以降に存在するかを調べます。その場合でも、返される値は「文字列」の先頭からの絶対位置になります。
- 「開始位置」に、指定した「文字列」の字数を超える値を指定するとエラー(「
E_WARNING
」)を発します。
- 「部分文字列」が存在するか否かを調べたい場合、この関数が返す値が「0」の場合もあるため、「
===
演算子」を使って「if(strpos($str, $part) === FALSE){処理}
」のように書くか、「is_numeric()
」関数を使用して「if(is_numeric(strpos($str, $part))){処理}
」と書く必要があります。
- 「マルチバイト文字」を扱う場合は「
mb_strpos()
」関数を使用します。
以下にサンプル。
<?php
$str = "abcABCabcABC";
$part = "B";
echo strpos($str, $part), "<br />";
echo strpos($str, $part, 5), "<br />";
if( strpos($str, "D") === false ){
echo "not exists<br />";
}
if( is_numeric( strpos($str, "a") ) ){
echo "exists";
}
/*出力結果
4
10
not exists
exists
*/
?>
PageTop
strrpos()
関数
- int strrpos(string 文字列, char 部分文字) [PHP4]
- int strrpos(string 文字列, string 部分文字列[, int 開始位置]) [PHP5]
- 「文字列」内で、「部分文字(単一文字でなければならない)」(PHP5では「部分文字列」)が最後に現れる位置を返す(大文字と小文字を区別します)関数です。
- 「部分文字/部分文字列」が存在しない場合は「FALSE」を返します。
- 「開始位置」を指定する(PHP5)と、それ以降に存在するかを調べます。その場合でも、返される値は「文字列」の先頭からの絶対位置になります。
- 「部分文字/部分文字列」が存在するか否かを調べたい場合、この関数が返す値が「0」の場合もあるため、「
===
演算子」を使って「if(strrpos($str, $part) === FALSE){処理}
」のように書くか、「is_numeric()
」関数を使用して「if(is_numeric(strrpos($str, $part))){処理}
」と書く必要があります。
- 「マルチバイト文字」を扱う場合は「
mb_strrpos()
」関数を使用します。
以下にサンプル。
<?php
$str = "abcABCabcABC";
$part = "b";
echo strrpos($str, $part), "<br />";
if( strrpos($str, "D") === false ){
echo "not exists<br />";
}
if( is_numeric( strpos($str, "a") ) ){
echo "exists<br />";
}
#PHP5で有効
if(substr(PHP_VERSION, 0, 1) >= 5){
$str = "abcPHP5abcPHP4abcPHP5abc";
echo strrpos($str, "PHP5"), "<br />";
$str = "abcPHP5";
if(strrpos($str, "PHP5", 4) === false)
echo "not exists";
}else
echo "PHP", PHP_VERSION, " is not PHP5.";
/*出力結果
7
not exists
exists
17
not exists
*/
?>
PageTop
strstr()
関数
- string strstr(string 文字列, string 部分文字列)
- 「文字列」内で、「部分文字列」が最初に現れる位置を見付け、「部分文字列」を含むそれ以降の文字列を返す関数です。
- 「部分文字列」が存在しない場合は「FALSE」を返します。
以下にサンプル。
<?php
$str = "abcABCabcABC";
$part = "A";
echo strstr($str, $part), "<br />";
/*出力結果
ABCabcABC
*/
?>
PageTop
stristr()
関数
- string stristr(string 文字列, string 部分文字列)
- この関数は、「
strstr()
」関数の「大文字と小文字を区別しない」バージョンです。
以下にサンプル。
<?php
$str = "abcABCabcABC";
$part = "A";
echo stristr($str, $part), "<br />";
/*出力結果
abcABCabcABC
*/
?>
PageTop
substr()
関数
- string substr(string 文字列, int 開始位置[, int 長さ])
- 「文字列」内の、「開始位置」からの部分文字列を返す関数です。
- 「長さ」が指定されると、指定した長さだけの部分文字列を返します。
- 「開始位置」が負の値の場合は、「文字列」の最後の文字から数えた位置からになります(正確には「文字列」の長さ-「開始位置」からです)。
- 「長さ」が負の値の場合は、長さではなく「文字列」の後尾「長さ」分をカットしたその手前までの部分文字列を返します(正確には「文字列」の長さ-「長さ」の手前までです)。
- 返す文字列が無い場合は「空文字列」を返します。
- 「マルチバイト文字」を扱う場合は「
mb_substr()
」関数を使用します。
以下にサンプル。
<?php
$str = "HODENASU";
echo substr($str, 0), "<br />";
echo substr($str, 8), "<br />";
echo substr($str, 3, 2), "<br />";
echo substr($str, -3), "<br />";
echo substr($str, -3, 2), "<br />";
echo substr($str, 3, -2), "<br />";
echo substr($str, -3, -2), "<br />";
/*出力結果
HODENASU
(「""」が返された)
EN
ASU
AS
ENA
A
*/
?>
PageTop
strtr()
関数
- string strtr(string 文字列, string 変換前, string 変換後)
- string strtr(string 文字列, array (変換前 => 変換後[, key2 => val2...]))
- 「文字列」内の「変換前」を全て「変換後」に置き換えて、その結果を返す関数です。
- 「変換前」と「変換後」の長さが異なると、長い方の余分な部分は無視されます。
- 引数が2つの場合は、第2引数には添え字が「変換前」で要素が「変換後」という連想配列を指定します。
- 配列の要素が複数ある場合は、それぞれの添え字に対応した要素に変換されます。この時、まず長い方の文字列から変換していき、変換済みのものは変換対象から外されます。また、「変換前」と「変換後」の長さが異なっていても意図した通りに変換されます。
以下にサンプル。
<?php
$str = "aiueo";
$arr1 = array("ai" => "***");
$arr2 = array("aiu" => "**");
$arr3 = array("a" => "*", "iueo" => "aaaa");
echo strtr($str, "aiu", "***"), "<br />";
echo strtr($str, "ai", "***"), "<br />";
echo strtr($str, "aiu", "**"), "<br />";
echo strtr($str, $arr1), "<br />";
echo strtr($str, $arr2), "<br />";
echo strtr($str, $arr3), "<br />";
/*出力結果
***eo
**ueo
**ueo
***ueo
**eo
*aaaa
*/
?>
PageTop
str_replace()
関数
- mixed str_replace(mixed 置換前, mixed 置換後, mixed 処理対象)
- 「処理対象」内の「変換前」を全て「変換後」に置き換えて、その結果を返す関数です。
- 引数には文字列もしくは配列が指定出来ます。
- 「置換前」と「置換後」が配列の場合、同じインデックス同士で置換を行い、「置換前」の方の要素数が多い場合は、残りの部分は空文字列に置換されます。
- 「置換前」のみが配列の場合は、全ての要素が「置換後」に置換されます。
- 「処理対象」が配列の場合は、それぞれの要素において置換処理を行い、その結果を配列で返します。
以下にサンプル。
<?php
$str_arr[] = "<p>HODENASU</p>";
$str_arr[] = "<p>NDA</p>";
$str_arr[] = "<p>NAGERU</p>";
$from = array("<", ">");
$to = array("<", ">");
$str_arr = str_replace($from, $to, $str_arr);
foreach($str_arr as $val){
echo $val, "\n";
}
/*出力結果(HTMLソース)
<p>HODENASU</p>
<p>NDA</p>
<p>NAGERU</p>
*/
?>
PageTop
str_pad()
関数
- string str_pad(string 文字列, int 固定長[, string 埋め込み文字列[, int 埋め方]])
- 「文字列」の長さが「固定長」に満たない時、(指定されたら)「埋め込み文字列」で(指定されない場合は「 (空白)」で埋められる)「固定長」になるまで埋めてその結果を返す関数です。
- 「埋め方」には、「
STR_PAD_RIGHT
」(右側に埋める)、「STR_PAD_LEFT
」(左側に埋める)、「STR_PAD_BOTH
」(両側に埋める)のいずれかの定数を指定出来ます。省略した場合のデフォルト値は「STR_PAD_RIGHT
」です。
以下にサンプル。
<?php
$str1 = "HODENASU";
$str2 = "NDA";
$str3 = "NAGERU";
echo str_pad($str1, 15), "<br />";
echo str_pad($str1, 15, "*+"), "<br />";
echo str_pad($str2, 15, "*+", STR_PAD_LEFT), "<br />";
echo str_pad($str3, 15, "*+", STR_PAD_BOTH), "<br />";
/*出力結果
HODENASU
HODENASU*+*+*+*
*+*+*+*+*+*+NDA
*+*+NAGERU*+*+*
*/
?>
PageTop
str_repeat()
関数
- string str_repeat(string 文字列, int 回数)
- 「文字列」を「回数」回繰り返した文字列を返す関数です。
以下にサンプル。
<?php
echo str_repeat("Pa ", 10), "Paris.";
/*出力結果
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Paris.
*/
?>
PageTop
substr_count()
関数
- int substr_count(string 文字列, string 部分文字列)
- 「文字列」中の「部分文字列」の出現回数を返す関数です。
- 「マルチバイト文字」を扱う場合は「
mb_substr_count()
」関数を使用します。
以下にサンプル。
<?php
echo $str = str_repeat("Pa ", 10)."Paris.", "<br />";
echo substr_count($str, "Pa");
/*出力結果
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Paris.
11
*/
?>
PageTop
作成日:2004年06月09日 最終更新日:2004年12月17日
【通常モード で表示】