preg_replace函数包含空间不工作的话(preg_replace for words con

2019-10-18 09:37发布

它不工作了包含空格的话,它适用于单个的词

如果可能改变的话从阵列为粗体

真正的代码

$_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);

输出:液压墙:墙液压试验

正确的输出:液压墙:壁液压试验

Answer 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);


Answer 2:

如果你在该行的末尾移除什么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

然而,你的代码正好是表现如预期。

如果它不适合你,你应该向我们提供您预期的输出,否则我们不能帮你。



Answer 3:

它解决了这个样子,我已经改变了我的需求,并使用这个表达式将其与双字,如果字是用大写匹配

$_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



文章来源: preg_replace for words containing space doesn't work