1

スペースを含む単語では機能せず、単一の単語では機能します

可能であれば、単語を配列から太字に変更します

本当のコード

$_POST['descricao'] = "parede hidráulica: teste de parede hidráulica";

$palavras = array("/\bparede hidráulica cozinha\b/i",
"/\bparede área de serviço\b/i",
"/\bparede area de serviço\b/i",
"/\bparede hidraulica cozinha\b/i",
"/\bparede hidráulica\b/i",
"/\bparede hidraulica\b/i",
"/\bparede box\b/i",
"/\btorneira\b/i",
"/\bbancada\b/i",
"/\bsoleira\b/i",
"/\bbaguete\b/i",
"/\brodapé\b/i",
"/\brodape\b/i",
"/\bparede\b/i");

$maiusculas = array_map('mb_strtoupper', $palavras);
$maiusculas = str_ireplace('\b/i', '', $maiusculas);
$maiusculas = str_ireplace('/\b', '', $maiusculas);

$_POST['descricao'] = preg_replace($palavras, $maiusculas, $_POST['descricao'], 1);

出力: PAREDE HIDRÁULICA: teste de PAREDE HIDRÁULICA

正しい出力: PAREDE HIDRÁULICA: teste de parede hidráulica

4

3 に答える 3

1

preg_replace 関数の最初の引数は正規表現 (または正規表現の配列) です。

私はそれがそうであるべきだと信じています:

$arr = array("/\bred apple\b/i", "/\bgreen lemon\b/i");
$arr2 = array("RED APPLE", "GREEN LEMON");

$repl = preg_replace($arr, $arr2, $string, 1);
于 2013-07-22T20:43:45.790 に答える
0

それはこのように解決されました、私は私の必要性を変えました、そしてこの正規表現を使用すると、単語が大文字の場合、ダブルワードと一致します

$_POST['descicao'] = 'UNITED STATES test';
$_POST['descricao'] = preg_replace("/\b([A-Z]{2,}(\s[A-Z]{2,})?)\b/", "<b>$1</b>"

出力:<b>UNITED STATES</b> test

于 2013-07-25T21:21:49.497 に答える
0

この行の最後にある count 引数を削除するとどうなるでしょうか:

$_POST['descricao'] = preg_replace($palavras, $maiusculas, $_POST['descricao']);

これにより、次のことが得られます。

PAREDE HIDRáULICA: teste de PAREDE HIDRáULICA

それ以外の:

PAREDE HIDRáULICA: teste de parede hidráulica

ただし、コードは期待どおりに動作しています。

それがあなたに合わない場合は、期待される出力を提供してください。そうでなければ、私たちはあなたを助けることができません.

于 2013-07-22T21:30:28.023 に答える