[PHP]-str_replaceは一回だけ交代します.
9911 ワード
ソース:http://www.ooso.net/archives/358
ログでこのような検索語を見ました.「php streamplace一回」です.ユーザーはphpをどう使うかを探しているかもしれません.replaceは対象文字列の内容を一回だけ置き換えて、全部置換するのではありません.これは小さいですが、面白い問題です.ちょうど前にも同じような処理をしました.その時はpregを直接利用しました.replaceが実現しました
mixed preg_replace(mixed pattern、mixed replace ment、mixed subject[、int limit])はsubjectでpatternモードのマッチング項目を検索してreplace mentに置き換えます.limitが指定されている場合は、limit個のマッチのみを置換し、limitまたはその値が−1である場合は、すべてのマッチ項目が置換されます.preg_のためにreplaceの4番目のパラメータは代替回数の制限を実現できるので、この問題はこのように処理するのに便利です.でもphp.netを見ています.strについては.replaceの関数についてコメントしたら、そこからもいくつかの代表的な関数が選び出されます.
strreplace.Onceの考えはまず、代替すべきキーワードの位置を見つけて、substrを利用します.replace関数を直接に置き換えます.
ログでこのような検索語を見ました.「php streamplace一回」です.ユーザーはphpをどう使うかを探しているかもしれません.replaceは対象文字列の内容を一回だけ置き換えて、全部置換するのではありません.これは小さいですが、面白い問題です.ちょうど前にも同じような処理をしました.その時はpregを直接利用しました.replaceが実現しました
mixed preg_replace(mixed pattern、mixed replace ment、mixed subject[、int limit])はsubjectでpatternモードのマッチング項目を検索してreplace mentに置き換えます.limitが指定されている場合は、limit個のマッチのみを置換し、limitまたはその値が−1である場合は、すべてのマッチ項目が置換されます.preg_のためにreplaceの4番目のパラメータは代替回数の制限を実現できるので、この問題はこのように処理するのに便利です.でもphp.netを見ています.strについては.replaceの関数についてコメントしたら、そこからもいくつかの代表的な関数が選び出されます.
strreplace.Onceの考えはまず、代替すべきキーワードの位置を見つけて、substrを利用します.replace関数を直接に置き換えます.
<?
php
function
str_replace_once(
$needle
,
$replace
,
$haystack
) {
//
Looks for the first occurence of $needle in $haystack
// and replaces it with $replace.
$pos
=
strpos
(
$haystack
,
$needle
);
if
(
$pos
===
false
) {
//
Nothing found
return
$haystack
;
}
return
substr_replace
(
$haystack
,
$replace
,
$pos
,
strlen
(
$needle
));
}
?>
strreplace.limitはやはりpreg_を利用します.replaceはただそのパラメーターがpreg_に似ているだけです.replaceは、いくつかの特殊文字に転送処理をしました.汎用性がより良いです.
<?
function
str_replace_limit(
$search
,
$replace
,
$subject
,
$limit
=-
1
) {
//
constructing mask(s)...
if
(
is_array
(
$search
)) {
foreach
(
$search
as
$k
=>
$v
) {
$search
[
$k
]
=
'
`
'
.
preg_quote
(
$search
[
$k
]
,
'
`
'
)
.
'
`
'
;
}
}
else
{
$search
=
'
`
'
.
preg_quote
(
$search
,
'
`
'
)
.
'
`
'
;
}
//
replacement
return
preg_replace
(
$search
,
$replace
,
$subject
,
$limit
);
}
?>