Portál AbcLinuxu, 12. května 2025 07:05

Dotaz: Rada s upravou v php

5.4.2015 22:05 Jan
Rada s upravou v php
Přečteno: 205×
Odpovědět | Admin
Dobry vecer. Nejsem sice programator presto bych potreboval poradit jak v php udelat jednu upravu. Mam promenou s nazvem $link ktera obsahuje odkaz.
$link="jedna\dve\honza\jde";
Dale mam pole s nazvem $ctrl
$ctrl=array('jedna'     => 'Jedna',
            'jedna\dve' => 'Dve');
no potreboval bych zavolat vzdy posledni polozku v tom poli ktera existuje.

1 kontrola zda pole obsahuje polozku "jedna\dve\honza\jde" - NEOBSAHUJE
2 kontrola zda pole obsahuje polozku "jedna\dve\honza" - NEOBSAHUJE
3 kontrola zda pole obsahuje polozku "jedna\dve" - OBSAHUJE
4 chci ziskat polozku s nazvem "Dve".
5 pokud polozka v poli vubec neni, vypsat "Chyba"
Pomuze prosim nekdo? Dekuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 5.4.2015 22:30 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Rada s upravou v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
explode + procházení array_keys
5.4.2015 23:13 Jan
Rozbalit Rozbalit vše Re: Rada s upravou v php
Dobry vecer. Dekuji za pomoc. Zkusil jsem pouzit explode a array_key_exists misto array_keys s tim mi to neslo vse podle manualu php. Sice to funguje ale nevim zda je pouzitelne a zda to neni zbytecne slozite. Dekuji
$t = 'Vychozi text';
$ctrl=array('jedna' => 'Jedna', 'jedna/dve' => 'Dve');
$link="jedna/dve/honza/jde";
$a = explode('/', $link);
$a2 = explode('/', $link);
foreach($a2 as $value){
$b = implode('/', $a);
if(array_key_exists($b, $ctrl)){
$t = $ctrl[$b];
break;
}else{
$c = explode('/', $b);
$x = count($c);
unset($a[$x-1]);
}
}
echo $t;
5.4.2015 23:25 NN
Rozbalit Rozbalit vše Re: Rada s upravou v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takovy detail:
4 kontrola zda pole obsahuje polozku "jedna" - OBSAHUJE
Takze hledas firsdt match?
6.4.2015 00:08 Jan
Rozbalit Rozbalit vše Re: Rada s upravou v php
Pokud pole obsahuje klic s nazvem jedna/dve tak klic s nazvem jedna se uz hledat nebude. Potrebuji ziskat vzdy jen ten prvni existujici odzadu.
Josef Kufner avatar 6.4.2015 00:22 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Rada s upravou v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
function link_search($link, $ctrl) {
	$link_a = explode('\\', $link);
	$sub_links = array();
	$prefix = '';

	// sestavi pole vsech podcest
	foreach ($link as $p) {
		if ($prefix == '') {
			$prefix = $p;
		} else {
			$prefix .= '\\'.$p;
		}
		$sub_links[] = $prefix;
	}

	// Projde pozpatku (od nejdelsi) pole vsech podcest a vrati prvni, ktera je v $ctrl
	foreach (array_reverse($sub_links) as $ln) {
		if (isset($ctrl[$ln])) {
			return array($ln, $ctrl[$ln]);
		}
	}
	return null;
}
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.