pinoc 2 Denunciar post Postado Dezembro 15, 2016 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á. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 16, 2016 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 Compartilhar este post Link para o post Compartilhar em outros sites
pinoc 2 Denunciar post Postado Dezembro 16, 2016 Não exibi nem um erro, o texto retornado é vazio e apenas as palavras chaves não compostas é exibida. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 17, 2016 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 Compartilhar este post Link para o post Compartilhar em outros sites