Autor Zpráva
simka00
Profil
hledám nějaké slovo a to chci v textu zvýraznit. nějak takto:

$string = "nejaky text";
if($_GET['bold']) { // slovo, ktere ma byt zvyrazneno
$trans = array ($_GET['bold'] => '<b>'.$_GET['bold'].'</b>');
$string = strtr ($string, $trans);
}


tohle zvýrazní hledané slovo v případě, že se shoduje velikostí písmen a diakritikou. jak ale udělám, aby nezáviselo na velikosti písmen a diakritice? fci odstran_diakritiku mám, jenom potřebuju nakopnout. ta trocha sena, co mám v hlavě, už totiž spí :)
Martin
Profil
co použít fci EregI_Replace() ?
simka00
Profil
Martin
regulární výrazy se učím už od podzimu, ještě jsem nezačal :) mohl bys to prosím nějak objasnit?
simka00
Profil
nevím jestli jsem se dobře vyjádřil: nepotřebuju napsat fci na konverzi z diakritiky do nediakritiky, ale když hledám třeba slovo "abc", aby se "Ábč" v textu přepsalo na "<b>Ábč</b>"
krteczek
Profil
no nevim jak by to bylo náročné, ale co zkusit tohle:

$hledane=odstran_diakritiku("abc");
$text="nějaký dlouhý řetězec třeba obsah stránky";
$pole=explode(" ",$text);
$vystup='';
for($i=é;$i<count($pole);$i++)
{
if($pole[$i]!='')
{
$bezdiakritiky=odstran_diakritiku($pole[$i]);
if($hledane==$bezdiakritiky)
{
$pole[$i]='<b>'.$pole[$i].'</b>';
}
}
$vystup.=$pole[$i];
}
echo $vystup;

pokud sem to správně pochopil, ale za rychlost bude asi ubohá
krteczek
medden
Profil *
Trochu som sa s tým pohral, neviem či je to ončo, ale asi lepšie ako nič:
<meta http-equiv="content-type" content="text/html;charset=utf-8">

<?php
function preparePregDiacritic($text) {
$return = array();

$text = mb_strtolower($text);
static $conversion = array('a' => '[aáä]', 'e'=>'[eéě]' /* ... atd ... */);

for($i = 0; $i < strlen($text); $i++) {
$return[] = isset($conversion[$text{$i}]) ? $conversion[$text{$i}] : $text{$i};
}

return implode('', $return);
}

$text = <<<EOT
Lorem ipsum dolor sit amet consectetuer eget sed quis Morbi auctor. Id justo facilisi vitae Fusce Nam dignissim metus nulla nulla vestibulum. Hendrerit a scelerisque ut massa felis et Nunc convallis elit interdum. Eros Quisque vitae semper et sapien semper Vivamus interdum pretium tempor. Et pede semper dui orci Ut fames pretium sapien dolor rutrum. Velit vitae malesuada Vestibulum laoreet nibh.
-- text -- Ultrices -- těxt -- justo turpis amet Mauris fringilla enim a tincidunt laoreet leo. Odio congue tincidunt congue id venenatis id id venenatis pellentesque felis. Turpis gravida felis Aenean Lorem cursus ut urna libero Aenean eu. Aliquam cursus Vestibulum velit dictum et Quisque et id Phasellus Morbi. Elit platea ante id tortor sodales nulla convallis Vivamus sollicitudin.
EOT;

$search = 'TeXT';

print preg_replace('~('.preparePregDiacritic($search).')~iu', '<strong>$1</strong>', $text);
?>
petr_1
Profil *
Super, díky, už přes hodinu se mořím s tím samým a přitom to tady mám na stříbrném podnose :-)
petr_1
Profil *
Jenom bych se chtěl zeptat, proč je tam ten parametr "u" ? Přijde mi, že celou funkčnost snižuje, pokud ho dám pryč, funguje to i bez protažení textu "přípravnou" funkcí. S tím že neřeším diakritika.
medden
Profil *
petr_1
Neviem ako tebe, ale mne to bez 'u' modifikátora nefunguje, pretože tie diakritické znaky (áäéě...) sú v utf-8, a potom sa to nevyznačí. (Teda v príklade sa nevyznačí 'těxt')
Toto téma je uzamčeno. Odpověď nelze zaslat.

0