0
私はコンテンツのある文字列を持つプロジェクトに取り組んでいます。、および単語を含む配列(大文字なし)。 $rewrites
。大文字と小文字を区別しない文字列をpreg_replaceに置き換えます。
私は何を達成したい、例の場合:「リンゴはリンゴの複数である、りんごはおいしいです」:
$content
は、次のテキスト文字列が含まれています。
$rewrites
には、 'apple'、 'blueberry'というデータを含む配列が含まれています。
今、私は他の何かのためにすべてのリンゴを置き換える関数を作りたいと思います。ラズベリー。しかし、文字列にはAppleがあり、preg_replace
を使って置き換えられません。リンゴはラズベリーと交換する必要があります(首都Rに言及してください)。
私はさまざまな方法とパターンを試しましたが、動作しません。
現在、私は、私はその場で、様々な代替例を構築することにより、それをやった次のコード
foreach($rewrites as $rewrite){
if(sp_match_string($rewrite->name, $content) && !in_array($rewrite->name, $spins) && $rewrite->name != $key){
/* Replace the found parameter in the text */
$content = str_replace($rewrite->name, $key, $content);
/* Register the spin */
$spins[] = $key;
}
}
function sp_match_string($needle, $haystack) {
if (preg_match("/\b$needle\b/i", $haystack)) {
return true;
}
return false;
}
は、あなたは自分の '$のrewrites'配列に 'アップル'、 'ブルーベリー' を追加することができますか? – BizzyBob
@BizzyBobいいえ、不可能です。配列にそれらを追加すると、大文字の単語に置き換える必要があるかどうかが分かりません。 – Chiel
私は大文字を検索し、大文字に置き換えると言っています。小文字を検索し、小文字で置き換えます。 – BizzyBob