Autor Zpráva
vospunt
Profil
jak mám při nahrazovaní at už str_replace nebo strtr ignorovat velikost pismen ...

nadefinoval jsem si funkci na zvyrazneny vyhledanych slov a kdyz vyhledam napr "a" tak mi to zvyrazni jen mala "a" když zadám "A" tak velká "A" ale jak mám udělat aby zvýraznil "a" i "A"

použití na slova např. Karel Gott je ve výpise
zadam vyhledat karel gott normalne mi to z DB vypíše ale zvýrazní mi to jen "arel ott"
AM_
Profil
str_replace->stri_replace
u strtr nevím
vospunt
Profil
stri_replace neexistuje jako funkce mozna ji mas v PHP nadefinovanou ale me nefaka ...
AM_
Profil
jo, promin, str_ireplace. A taky je soucasti az od PHP5
Shulík
Profil
Ve skutečnosti se jmenuje
str_ireplace

(cz2.php.net/manual/en/function.str-ireplace.php)
vospunt
Profil
jo jestli se chce podívat a vyzkoušet to moje zvýraznění je to na Giga-Music.net
vospunt
Profil
jo funguje taky díky jen ještě dvě otázky kolikrát str_ireplace projde řetězec a nahrazuje ty věci co mu zadám ....

a když zadám "a" tak se podívejte vyhledani_a nahrazuju vyhledane slovo za <span class=zvyraznit>$hledane_slovo</span> a tady bych potreboval poradit jak bych mohl funkci upravit aby mi to pak zachovalo velká malá pismena ... treba spocitat kde se slovo nachazi a podivat se co je to za pisma bo ja nwm

$slovo = vyhledae slovo
$text je text kde se ma zvyraznit to slovo

function zvyraznit($slovo,$text) {
	$a = array ("%20",":"," ","'",'"',"!","¨","=",",",".","-","_","*","(",")","#","&","@","{","}","<",">","´","ˇ","/","|","\\","%");
	$b = "|";
	$var = str_replace($a,$b,$slovo);
	
	$slovo2 = explode("|",$var);
	$pocet_slov = count($slovo2);
	$slovo22 = array();
	$text22 = array();
	for ($x=0;$x<$pocet_slov;$x++) {
		if ($slovo2[$x] != $slovo2[$x-1] and $slovo2[$x] != "") {
		$slovo22[$x] = $slovo2[$x];
			$text22[$x] = "<span class=\"zvyraznit\">".$slovo22[$x]."</span>";
		}
	}
	$nahradit = array_combine($slovo22,$text22);
//	$text = strtr($text,$nahradit);
	$text = str_ireplace($slovo22,$text22,$text);
	return $text;
}
AM_
Profil
Možná přijde i kouzelník:
  $zvyraznit=preg_replace('~(?!<[^\s])(('.implode(')|(', $pole_slov_k_zvyrazneni).'))(?![^\s])~i', '<b>\\2</b>', $puvodni_text);

snad mám ten regulár správně, ale mělo by to fungovat.
vospunt
Profil
to nejde vůbec teda aspon me ... a regulary neumím tak se snažím to udělat takto :D ale pokud by někdo mel funkci byl bych velice vděčný
Majkl578
Profil
Toto by nešlo? :)

$input = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis molestie dui. Sed ac magna non velit consequat euismod quis nec diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer augue diam, pellentesque quis consectetur id, faucibus eget nunc. ';

$find = array('ipsum', 'quis', 'sed ac');

array_walk($find, create_function('&$value, $key', '$value = preg_quote($value, \'~\');'));

echo preg_replace('~('.implode('|', $find).')~i', '<b>\\1</b>', $input);
vospunt
Profil
Majkl578:
To funguje dobře jen by chtělo ošetřit aby $input neboli vstupni text prosel jen jednou ... pri kazdem nahrazeni slova jede skrtipt ozdzacatku textu ...

dělá to problém když to nahrazuju span, <b>\\1</b> jsem nahradil za <span class="zvyraznit">\\1</span>

lze to teda ošetřit ?
Majkl578
Profil
vospunt:
??

U mě je výstup toto (což jsem si myslel, že je požadavek):
Lorem <span class="zvyraznit">ipsum</span> dolor sit amet, consectetur adipiscing elit. Phasellus <span class="zvyraznit">quis</span> molestie dui. <span class="zvyraznit">Sed ac</span> magna non velit consequat euismod <span class="zvyraznit">quis</span> nec diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer augue diam, pellentesque <span class="zvyraznit">quis</span> consectetur id, faucibus eget nunc. 


Pokud to není to co požaduješ, zkus to popsat lépe (jsem dneska už trochu zničený...).
vospunt
Profil
Majkl578:
to já taky :D ale podívej se na stránku hned tam tu funkci aplikuju a uvidis
www.giga-music.net/vyhledani/mp3-A/00-4/
Majkl578
Profil
To je ale špatné chování. Vypadá to jako kdyby jsi to použil v nějakém cyklu. Mohu vidět použití v kontextu?
vospunt
Profil
mám to v cyklu WHILE
	if (get_pos($page2,"2") != "") {
		$keywords = get_pos($page2,"2");
	} else {
		$keywords = keywrds2($_POST[klicova_slova]);
	}
$keywords_ = keywrds($keywords);
	
	
while ($zobraz = mysql_fetch_assoc($sql)) {
		echo "<a class=h2 title='".odstran_uvozovky($zobraz[interpret])." - ".odstran_uvozovky($zobraz[song])."' href='".url_down("mp3",$zobraz[ID],$zobraz[interpret],$zobraz[song])."' >".zvyraznit($keywords_,$zobraz[interpret])."&nbsp;-&nbsp;".zvyraznit($keywords_,$zobraz[song])."</a>";
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_klipu],"klip");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_klipu_yt],"klip_yt");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_textu],"text");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_preklad],"preklad");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_tabulatury],"tabulatura");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_cd],"cd");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_diskografie],"diskografie");
				echo	je($zobraz[ID],$kde_hledat,$zobraz[id_clanku],"clanek");
				echo edit_delete($zobraz[user],$kde_hledat,$zobraz[ID]);
			$nastaveni_prehravac = "skryty";
			$md5_url = md5($zobraz[URL]);
		echo "<div id=odsazeni_left_top>";
			echo "<a href='javascript:Show(\"prehrat_".$md5_url."\");Hide(\"odkaz_".$md5_url."\");' id=odkaz_".$md5_url." class=zobrazit_prehravac>Zobrazit přehrávač</a><br>";
				prehravac_mp3($zobraz[URL]);
			echo "Server: <a href='".url_down("mp3",$zobraz[ID],$zobraz[interpret],$zobraz[song])."' class=url>".nazev_adresy($zobraz[URL])."</a>";
			echo "<br>Klíčová slova:&nbsp;<a href=".HOME."vyhledani/mp3-".keywrds2(seo_adresa($zobraz[interpret]))."/00-1/>".zvyraznit($keywords_,$zobraz[interpret])."</a>,&nbsp;<a href=".HOME."vyhledani/mp3-".keywrds2(seo_adresa($zobraz[song]))."/00-1/>".zvyraznit($keywords_,$zobraz[song])."</a>";
			$keyw_pole = explode(",",$zobraz[keywords]);
			for($p=0;$p<count($keyw_pole);++$p) {
				echo ",&nbsp;<a href='".HOME."vyhledani/mp3-".keywrds2(seo_adresa($keyw_pole[$p]))."/00-1/'>".zvyraznit($keywords_,$keyw_pole[$p])."</a>";
			}
			echo "<br>Od <b>".datumcas2web($zobraz[datum])."</b>, staženo <b>".$zobraz[stazeno]."&nbsp;x</b>, Vložil <b>".user_by_id("nick",$zobraz[user])."</b>";
			if ($_SESSION[prava] != "") {
				echo "&nbsp;&nbsp;<a class=img href='".HOME."vzkaznik/write/".user_by_id("nick",$zobraz[user])."-".$zobraz[interpret]."-".$zobraz[song]."/'><img src='".IMG_ICO."obalka.gif'></a>";
			}
			echo "<br>Hudební žánr: <b>".styl($zobraz[styl])."</b>";
			if ($zobraz[komentare] == "1") {
				echo "&nbsp;&nbsp;<a onclick=\"javascript:Show('koment_".$zobraz[ID]."')\">Komentářů: <b>".komentaru("mp3",$zobraz[ID])."</b></a>";
			}
			echo "<br><a href='".HOME."nefunkcni/mp3/".$zobraz[ID]."/".$a."' class=img><img src=".ICO."nefunkcni.png border=0>&nbsp;Nahlásit jako nefunkční</a>";
		echo "</div><br>";
}

tohle doufam staci ... ale podle me to nema vliv
Majkl578
Profil
[#15] vospunt
Ke kvalitě kódu se raději vyjadřovat nebudu.

Z tohohle moc nevykoukám. Nicméně, řeknu to teoreticky. Text se prochází jednou pokud je na něj daný regulár volán pouze jednou. Pokud by tam bylo něco, kde by to procházelo víckrát, např. v nějakém cyklu, který prodlužuje řetězec, tak by to byl problém, regulár by se volal dvakrát a tudíž i dvakrát nahrazoval (což se u tebe evidentně někde děje, na lokálním pc se mi problém nepovedlo reprodukovat).
vospunt
Profil
Majkl578:
jestli máš ICQ (moje 346364766 ) tak bysme se domluvili tam poslal bych ti celej soubor

tento cyklus je jen na vypsani odkazů na MP3 soubory
vospunt
Profil
dobrý už mi to jede a jde do toho i zahrnout nějak i diakritika ... vyjádřil jsem se ted špatně spíš jsem myslel mám text:
Koblížc! - Popelář
a zadám vyhledání písmene a tak aby se zvýraznilo i to á

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0