文字列内のテキストを小枝を使用して太字に置き換えたいのですが、コードは次のとおりです。
{{ string|replace({(text): '<span style="font-weight: bold;">'~text~'</span>'})|raw }}
この例では:
string = "Hello world!"
text = "hello"
「こんにちは」という単語を置き換えることはありません。大文字と小文字を区別しないようにするにはどうすればよいですか?
はい、replace
フィルタでは大文字と小文字が区別され、変更するオプションはありません。
Twigのソースコードを見ると、次のものがreplace
使用されていることがわかりますstrtr
。
// lib/Twig/Extension/Core.php
(...)
new Twig_SimpleFilter('replace', 'strtr'),
元のケースを失うことを気にしない場合は、次のような回避策を使用できます。
{{ string|lower|replace({(text): '<span style="font-weight: bold;">'~text~'</span>'})|raw }}
参照:http://twigfiddle.com/6ian2b
それ以外の場合は、次のような独自の拡張機能を作成できます。
$filter = new Twig_SimpleFilter('ireplace', function($input, array $replace) {
return str_ireplace(array_keys($replace), array_values($replace), $input);
});
この機能はTwigコミュニティ全体に役立つと思います。GitHubで拡張機能を開くことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加