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