Resultado de Colchetes, Mas sem Em Regex

Edição em 25/02/2019, 12:40.

Vejam este vídeo e me digam por que este comportamento simples não acontece na função PHP.
https://drive.google.com/open?id=1eGtuYVddT-l4ePu8g50O1j8y7ihZPEIm

Bom dia.
Peço que não me mostrem soluções, apenas preciso saber o porquê deste código abaixo não funcionar, sempre retornando o $campoArray implodido sem as tags HTML:

function formatarPalavraBuscada($campo, $busca){ 
        $campoArray = explode(' ', $campo);
        $buscaArray = explode(' ', $busca);
        for($i = 0; $i < count($buscaArray); $i++){
            echo 'Palavra da vez em Busca Array: '.$buscaArray[$i].'<br>';
            for($j = 0; $j < count($campoArray); $j++){
                echo 'Palavra da vez em Campo Array: '.$campoArray[$j].'<br>';
                preg_replace('/'.$busca[$i].'/i', '<span class="marca-texto">'.$campoArray[$j].'</span>', $campoArray[$j]);
            }
        }
        return implode(' ',$campoArray);
    }

N tem vídeo

1 curtida

Corrigi isso, colocando como texto pré formatado.

Não sei se já resolveu, mas na linha do preg_replace

preg_replace('/'.$busca[$i].'/i', '<span class="marca-texto">'.$campoArray[$j].'</span>', $campoArray[$j]);

Você esta utilizando a variável $busca, pegando a posição $i na palavra “quero” ele vai achar a letra “q”.
Deve ser a variável $buscaArray, assim, na posição $i do array ele achará a string “quero”.

E para substituir deve estar setando em algum lugar

$campoArray[$j] = preg_replace('/'.$buscaArray[$i].'/i', '<span class="marca-texto" style="color: red">'.$campoArray[$j].'</span>', $campoArray[$j]);

Código que usei para achar o problema:

function formatarPalavraBuscada($campo, $busca){ 
    $campoArray = explode(' ', $campo);
    $buscaArray = explode(' ', $busca);
    for($i = 0; $i < count($buscaArray); $i++){
        echo '<br><b>Palavra da vez em Busca Array: '.$buscaArray[$i].'</b><br>';
        for($j = 0; $j < count($campoArray); $j++){
            echo 'Palavra da vez em Campo Array: '.$campoArray[$j].'<br>';
            preg_match('/'.$buscaArray[$i].'/i', $campoArray[$j], $matches);
            if (count($matches) > 0)
                print_r($matches);
            $campoArray[$j] = preg_replace('/'.$buscaArray[$i].'/i', '<span class="marca-texto" style="color: red">'.$campoArray[$j].'</span>', $campoArray[$j]);
        }
    }
    return implode(' ',$campoArray);
}

$campo = 'Teimando mais uma vez, quero dizer coisas que vão sanar seu problema sdfads asdfas QuEro DiZer oasdçfjasdfkjaç asdf';
$busca = 'quero';

echo '<pre>';
print_r(formatarPalavraBuscada($campo, $busca));

Resultado:

http://prntscr.com/mrdpao
1 curtida