私が最近取り組んだプロジェクトには、キーワードの一括置換の問題がありました。置換だけについては何も言うことはありませんが、ここで必要なのは、各キーワードを 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 />}