Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite.
Tenho o seguinte ambiente, um texto (string) e varias palavras chaves (array) compostas e não compostas, preciso verificar quais palavras chaves existem neste texto e colocar-las em negrito (<strong></strong>).
Porem a função que o antigo programador do sistema fez não esta funcionando.
Versão do PHP 5.9.39
Segue a função.
function palavras_chave($texto = '', $palavras = array())
{
$result = array(
'texto' => $texto,
'palavras' => array(),
);
foreach ($palavras as $keyword)
{
$keyword = preg_quote(htmlentities($keyword, ENT_COMPAT, 'UTF-8'));
$texto = preg_replace(
'/\p{L}*?'.$keyword.'\p{L}*/ui',
'<strong>$0</strong>',
$texto
);
//var_dump($texto);
//die();
//"<span style=\"background: #b94a48; border-radius: 3px; padding: 2px 4px;white-space:no-wrap; color:#fff\">$0</span>",
preg_match('/\p{L}*?'.$keyword.'\p{L}*/ui', $texto, $matches);
if ($matches[0])
{
$result['palavras'][] = $matches[0];
}
unset($matches);
}
$result['texto'] = $texto;
return $result;
}
Obrigado desde já.
Não exibi nem um erro, o texto retornado é vazio e apenas as palavras chaves não compostas é exibida.
Testei essa função desta forma:
$texto = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris in faucibus mauris. Cras ligula lectus, hendrerit sit amet nulla vel, pellentesque pellentesque augue. Fusce ac tincidunt nunc, a imperdiet dolor.';
$palavras = [
'Lorem',
'sit amet',
'Mauris',
];
var_dump(palavras_chave($texto, $palavras));
Resultado:
array(2) {
'texto' =>
string(295) "<strong>Lorem</strong> ipsum dolor <strong>sit amet</strong>, consectetur adipiscing elit. <strong>Mauris</strong> in faucibus <strong>mauris</strong>. Cras ligula lectus, hendrerit <strong>sit amet</strong> nulla vel, pellentesque pellentesque augue. Fusce ac tincidunt nunc, a imperdiet dolor."
'palavras' =>
array(3) {
[0] =>
string(5) "Lorem"
[1] =>
string(8) "sit amet"
[2] =>
string(6) "Mauris"
}
}
Pelo que entendi, era esse o resultado esperado. Parece estar tudo ok.
Testei no php 5.6.26 e no 7.0.11
Não está funcionando? Por quê? O que acontece? Dá erro? Qual?
Descreva sua dúvida.
Lembre-se de habilitar todas as exibições de erro, como mostrado neste tópico, na Orientação 2
Outra coisa, não existe PHP 5.9. Reveja a versão