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']);
?>
поиск работает, потому что, если я ищу "новый мотоцикл", возвращает текст, но слова не отображаются, как я хочу.
2
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