PHP文字列置換回数制御方法

WBOY
WBOYオリジナル
2016-06-20 13:03:501061ブラウズ

私が最近取り組んだプロジェクトには、キーワードの一括置換の問題がありました。置換だけについては何も言うことはありませんが、ここで必要なのは、各キーワードを 1 回だけ置換する必要があるということです。 PHP関連の関数ドキュメントを確認したところ、PHP自体にこの関数を実装する機能がないことが判明したため、自分で解決する必要がありました。悩んだ末にいくつか考えられる方法をまとめてみたのでメモ!

(1) この関数を実装するには preg_replace 関数自体が置換回数を制御できるので、具体的な実装方法は以下のように考えました。 1 回のみの置換に限定されず、最大の置換回数を実現できます。たとえば、$limit が 2 の場合、単語が何度も出現する場合に 2 回のみ置換されることを意味し、-1 はすべての置換を意味します。

$search と $replace はどちらも文字列または配列にすることができますが、

function str_replace_limit($search,$replace,$content,$limit=-1){<br />    if(is_array($search)){<br />        foreach ($search as $k=>$v){<br />            $search[$k]='`'.preg_quote($search[$k],'`').'`';<br />        }<br />    }else{<br />        $search='`'.preg_quote($search,'`').'`';<br />    }<br />	//把图片描述去掉<br />	$content=preg_replace("/alt=([^ >]+)/is",'',$content);<br />    return preg_replace($search,$replace,$content,$limit);<br /><p>}

に対応する必要があります (2) substr_replace 関数を使用して実装しますが、それは一度実装してください Replace

//まずキーワードの位置を見つけてから、substr_replace (システム関数) を使用して置換操作を実行します

function str_replace_once($search,$replace,$content){<br />	//把图片描述去掉<br />	$content=preg_replace("/alt=([^ >]+)/is",'',$content);<br />    $pos=strpos($content,$search);<br />    if($pos===false){<br />        return $haystack;<br />    }<br />    return substr_replace($content,$replace,$pos,strlen($search));<br />}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。