str replace использование массивов


я Хочу negritar условия поиска в результаты, но когда я использую explode, и я пытаюсь использовать str_replace, получаю array обратно.

<?php
$search_term = filter_var( $_GET['s'], FILTER_SANITIZE_STRING );

$palavras = explode( ' ', $search_term );

$q = 'SELECT * FROM classificados WHERE';
for ( $i = 0; $i < count($palavras); $i++ ) {
  $q.= " texto LIKE '%" . $palavras[$i] . "%' AND " ;
}
$q.= " aprovado='s' ORDER BY ID desc";

$r = mysql_query( $q );
if ( mysql_num_rows( $r )==0) //no result found
{
  echo "<div id='search-status'>Nenhum resultado encontrado!</div>";
}
else //result found
{
  echo "<ul>";

  while($row = mysql_fetch_assoc($r)) {
  // aqui nao funciona
  $title = str_replace($palavras, "<b>". $palavras[$i] ."</b>", $row['texto']);
?>

поиск работает, потому что, если я ищу "новый мотоцикл", возвращает текст, но слова не отображаются, как я хочу.

Author: bfavaretto, 2014-10-10

2 answers

Проблема В том, что, чтобы использовать str_replace таким образом, вам потребуется две - arrays) , со словами, нормы, а в другой-слова уже выделены жирным шрифтом. Лучше всего было бы даже петли:

$title =  $row['texto'];
foreach( $palavras as $palavra ) {
    $title = str_ireplace( $palavra, '<b>' . $palavra . '</b>', $title );
}

, Заметите, что я использовал str_ireplace, так что обмен произойдет независимо от ввода были с регистра.


Если вы хотите более высокую производительность, и многие результаты в списке, вы можете сделать так:

// acrescentar no topo
$palavras = explode( ' ', $search_term );
$negritos = $palavras;
array_walk( $negritos, function( &$neg ) { $neg = '<b>'.$neg.'</b>' } );

// e na parte do loop:
  echo "<ul>";
  while( $row = mysql_fetch_assoc($r) ) {
     $title = str_ireplace( $palavras, $negritos, $row['texto'] );
  }
 3
Author: Bacco, 2014-10-10 17:48:14

Попробуйте так:

$palavras = explode( ' ', $search_term );
$palavrasnegrito = array();
foreach ($palavras as $p)
   $palavrasnegrito[] = "<strong>{$p}</strong>";



$title = str_replace($palavras, $palavrasnegrito, $row['texto']);
 2
Author: KaduAmaral, 2014-10-10 17:31:21