abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: PHP funkce

13.2.2011 23:18 Pepino
PHP funkce
Přečteno: 397×
Dobrý večer, dovolil bych si prosím požádat jako ještě celkem nezkušený s jednou funkcí.

Mám proměne:
$prom1 = "neco";
$prom2_pozice = "1";
$znak1 = "S";
$znak2 = "E";
a potrebuji najit v souboru cast textu, ktery podle promenych rika: budu hledat 1 text "neco" za timto textem najdu první znak S a prvni znak E a mezi temito znaky vyberu text.

Vůbec nevim jak na to mam jit. Poradil by mi prosím někdo? Googloval jsem cele odpoledne ale nenasel jsem vubec nic. Dekuji za pomoc. Pepa

Řešení dotazu:


Odpovědi

Přemek Vyhnal avatar 14.2.2011 00:01 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
Rozbalit Rozbalit vše Re: PHP funkce
Nebylo by lepší použít regulární výraz? Něco jako /neco.*?S(.*?)E/
NO RAPTORS!
15.2.2011 19:55 Ben Joyce
Rozbalit Rozbalit vše Re: PHP funkce
Příloha:
Mozna to je trochu neprehledne a nejspise by se nasel lepsi pristup k tomuto problemu, ale toto je muj prvni napad.
Pokud jsem dobre pochopil problem, chcete vyhledavat od pozice $prom2_pozice text $prom1 a dale vyhledat prvni znak $znak1 a prvni znak $znak2 a ziskat text mezi temito znaky.
Problem je reseny obecne, takze $prom1 muze byt napriklad i veta, ale znaky jsem zachoval jako znaky.
Zde je kod:

function vybrat_z_textu($prom2_pozice, $prom1, $znak1, $znak2, $string)
{
// vstupni kontrola
if (strlen($prom1) < 1)
$nalez = true;
else
$nalez = false;

if (strlen($string) < 1)
return;



// zjisti delku textu
$prom_lenght = strlen($prom1);
$string_lenght = strlen($string);

// prom2_pozice by mela obsahovat cislo v poradi znaku - tedy zacni na
// patem znaku => $prom2_pozice = 5;
$i = $prom2_pozice - 1;
// probiha hledani klicove fraze $prom1 v textu
while (($nalez != true) || ($string_lenght >= ($i + 1)))
{
// pokud prvni znak klic. fraze je shodny se znakem, ktery je na rade
if ($string[$i] == $prom1[0])
{
// zjisti zdali dalsi znaky jsou shodne
$n = $i + 1;
for ($j = 1; $j <= ($prom_lenght - 1); ++$j)
{
if ($string[$n] != $prom1[$j])
break;
else
$uspech = true;
++$n;
}

// pokud jsou dalsi znaky shodne, "vrati" pozici po klic. frazi
if ($uspech)
{
$i = $n;
break;
}
}


++$i;
}


// vyhleda obe pismena
$pozice_prvniho = 0;
$pozice_druheho = 0;
while (($nalez_druheho != true) || ($string_lenght >= ($i + 1)))
{
if ($string[$i] == $znak1)
$pozice_prvniho = $i;

if ($string[$i] == $znak2)
{
$pozice_druheho = $i;
$nalez_druheho = true;
}

++$i;
}


// vybere a vrati text mezi znaky
return substr($string, $pozice_prvniho + 1,
($pozice_druheho - $pozice_prvniho) - 1);
}


A zde je doplnek, na kterem muzete kod vyzkouset:

// vstupni data
$prom1 = "neco";
// predpokladam ze je zde pozice, na ktere ma zacit vyhledavat
$prom2_pozice = 1;
$znak1 = "S";
$znak2 = "E";

// vstupni text
$string = "Toto je cvicny text. Jde pouze o to, aby zde program nasel
slovo Neco NECO NeCo neco (zkouska) a potom pismeno S a mezi tim ma byt text - tedy je zde.
Nyni jiz musi najit pismeno E. A je to.";
var_dump(vybrat_z_textu($prom2_pozice, $prom1, $znak1, $znak2, $string));

Cely soubor (samostatne funkcni) naleznete v priloze.
15.2.2011 23:21 l4m4
Rozbalit Rozbalit vše Re: PHP funkce
Lze se pak divit, že má PHP tak hroznou pověst?
16.2.2011 09:41 Vjetnam
Rozbalit Rozbalit vše Re: PHP funkce
To je opravdu krize. Misto 1 radku kodu s regularnim vyrazem takovy bastl...
16.2.2011 10:37 Ben Joyce
Rozbalit Rozbalit vše Re: PHP funkce
Regularni vyrazy by snad vratili pouze true nebo false, ne?
16.2.2011 10:45 Ben Joyce
Rozbalit Rozbalit vše Re: PHP funkce
Beru zpet, podival jsem se do dokumentace - vrati nejspise integer ukazujici na pozici vyskytu. Nenapadlo me to resit pres reg. vyrazy, bylo by to o dost kratsi.
16.2.2011 12:11 jos
Rozbalit Rozbalit vše Re: PHP funkce
podívej se ještě jednou a pořádně

vrací to počet matchů, samotný matche ti to nacpe (preg_match) do třetího parametru
16.2.2011 18:41 Ben Joyce
Rozbalit Rozbalit vše Re: PHP funkce
Pravda, to by to jeste podstatne zjednodusilo - pomalu do jednoho radku.
16.2.2011 10:17 novak
Rozbalit Rozbalit vše Re: PHP funkce
Ne. Protoze v nem kdejakej bastlir vybastli kdejakej polofunkcni bastl a jeste se sam nazve programatorem.
Michal Wirth avatar 16.2.2011 18:44 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: PHP funkce
no, misto takovy machisticky hlasky byste mohl priste poskytnout nejaky lepsi reseni ... ne kazdy totiz spadl z nebe uceny tak, jako vy
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
16.2.2011 21:35 l4m4
Rozbalit Rozbalit vše Re: PHP funkce
A to konkrétně proč?

Řešení už je přece v prvním komentáři, výrazně starším než ten, na který jsem reagoval. Přesný regulární výraz z toho dotazu stejně nezkonstruuji, protože např. nerozumím, jak se vlastně použije ta jednička.
Michal Wirth avatar 17.2.2011 07:58 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: PHP funkce
ja jsem uz psal proc ... pokud jste mel potrebu na neco takoveho reagovat, mohl jste vzit v potaz, ze dotycny je evidentne zacatecnikem a neshazovat ihned jeho reseni

navic pokud byste nemel po ruce regexpy, tak byste to ve vysledku pravdepodobne resil podobnym "rychlo-bastlem" a asi by vas hned nenapadl nejaky efektivnejsi algoritmus

ja take uplne nepochopil, co tazatel vlastne chce, ale nevidim nic slusneho na zesmesnovani nekoho, kdo se pokusil dat aspon nejakou "rozumnejsi" odpoved
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
17.2.2011 09:25 l4m4
Rozbalit Rozbalit vše Re: PHP funkce
Kdyby se příspěvek, na který jsem reagoval, objevil první, a až poté řešení s regexpem, tak bych takto nereagoval. V tomto případě se ovšem dotyčný začátečník mohl poučit, že to jde dělat řádově lépe, a nedávat sem ty špagety. Že to neudělal... no, proto mají PHP a programátoři v něm pověst, jakou mají.
17.2.2011 13:09 Ben Joyce
Rozbalit Rozbalit vše Re: PHP funkce
Ano, mohl bych se poučit, ale dříve jsem pokaždé použil reg. výraz jen v situaci, kdy jsem potřeboval true nebo false - tedy měl jsem zafixovanou návratovou hodnotu preg_match jako bool. Tedy jsem neviděl nějaké řešení. Je ale pravda, že jsem se měl ujistit v dokumentaci.
Michal Wirth avatar 17.2.2011 13:13 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: PHP funkce
ano, to byste priste mel
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
Michal Wirth avatar 16.2.2011 18:26 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: PHP funkce
na prvni pohled to vypada, ze by to mozna mohlo nejak fungovat, neni to ale ani bezpecne ani jednoduche a ani efektivni reseni, coz je spatne ... nelze totiz na prvni pohled zjistit, co to vlastne dela a zda je to tak spravne ... je lepsi vyuzit prostredku, ktere jsou pro toto urceny a ktere jsou uz lety proverene ... treba zde lze elegantne uplatnit regularni vyrazy ... napr. takto
/*
 * Najde v ramci textu prvni vyskyt slova "neco" a vrati prvni podretezec,
 * ktery nasleduje za timto nalezem mezi pismeny "S" a "E" (bez ohledu na
 * spravne parovani znaku). Pokud nedojde ke shode, funkce vraci false.
 */
function foo($text)
{
	$matches = array();

	if (preg_match('/neco[^S]*S([^E]*)E/', $text, $matches) > 0)
		return $matches[1];

	return false;
}
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
16.2.2011 19:06 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: PHP funkce
Ale nužno podotknouti, že kdyby byly parametrické i další proměnné ze zadání, nebylo by to již tak triviální. A nakonec by se dospělo k podobnému klonu „ručního“ řešení jak zde byl již uvedeno, nebo by se funkce značně rozvinula na ošetření vstupu a generování platného regexp.
Nad 1. řešením by chtělo „malinko“ zapracovat, ale jinak obě jsou dobrá, ale každé na něco jiného :).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Michal Wirth avatar 16.2.2011 19:27 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: PHP funkce
ano, muselo by se to jeste dodelat
Důležité se časem stává absurdním, absurdní se časem mění v důležité.

Založit nové vláknoNahoru

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

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.