Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Nefungují regularní výraz na rozpoznání normální url od url Wikipedie

Aktivity
Avatar
Neaktivní uživatel:10.6.2018 9:20

Nevíte proč nefunguje toto:

function getWiki($url) {


    $wiki = preg_match('https://cs.wikipedia.org/wiki/(.*?)', $url, $matches) ? $matches[1] : null;

    return $wiki;
 }
$wiki = getWiki($url);
echo $wiki;

? Děkuji :) (

$url

získávám z DB )

Editováno 10.6.2018 9:21
Odpovědět
10.6.2018 9:20
Neaktivní uživatelský účet
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:10.6.2018 15:31

Protože jsi napsal jen tělo toho výrazu. Musíš ještě doplnit delimitery a případně příznaky.
Musí to být '#https://cs.wikipedia.org/wiki/(.*?)#'.
PS 1: nemáš tam kotvy ^$, je to schválně?
PS 2: mělo by to na tebe křičet něco ve smyslu, že delimiter nesmí být alfanumerický znak, to máš vypnutá varování a pod?
PS 3: samozřejmě tam nemusí být #, může tam být cokoliv, co není číslo, písmeno nebo speciální znak výrazu a zároveň se to v samotném výrazu nevyskytuje.

Editováno 10.6.2018 15:32
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
10.6.2018 15:31
the cake is a lie
Avatar
Neaktivní uživatel:10.6.2018 15:34
  1. Není to schválně, teprve stím začínám
  2. Žádná chybová hláška je když sem to chtěl vypsat tak se nic nevypsalo :)
Nahoru Odpovědět
10.6.2018 15:34
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.6.2018 8:02

Pak mas asi chybove hlasky vypnute. error_reportin­g(E_ALL)

Reg. vyraz se zapisuje, viz Petr Čech
znacka + vyraz + znacka + modifikatory
znacka = obvykle # nebo ~
A samozrejme kvuli php to musis mit v uvozovkach, jakoze string. Tak to vypada trochu divoce. Kdezto treba v javascriptu nee.

Obvykle se do znacky pouziva znak, ne 0-9 ne a-z, takovy, ktery se nevyskytuje ve vyrazu. A nebo se pouzije bezny a pokud se vyskytuje ve vyrazu, musi se zalomitkovat.
#\##

Modifikatory viz dokumentace. Urcuji treba
i = nerozlisovat mala velka pismenka
m = multiline (pokracovat i za znakem \n), atd
http://php.net/…odifiers.php
http://php.net/…ook.pcre.php

 
Nahoru Odpovědět
11.6.2018 8:02
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.6.2018 8:05

Ty chybove hlasky, co to melo napsat...
http://php.net/…examples.php
'missing starting delimiter '

Jeste doplnim, ty znacky jsou vlastne 3
znacka = obvykle # nebo ~ nebo /

Editováno 11.6.2018 8:06
 
Nahoru Odpovědět
11.6.2018 8:05
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Peter Mlich
Petr Čech:11.6.2018 8:41

Zajímavé, já viděl skoro vždy / a ne ~ nebo #. Připomíná to potom právě třeba regex v JS.

Nahoru Odpovědět
11.6.2018 8:41
the cake is a lie
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Petr Čech
Peter Mlich:11.6.2018 11:25

/ urcite nejvice. # a ~ jsem zahledl na forkach. Osobne pouzivam ~.

http://php.net/…limiters.php
http://cz.php.net/…limiters.php - a do cestiny to neprelozili :)
Often used delimiters are forward slashes (/), hash signs (#) and tildes (~). The following are all examples of valid delimited patterns.

/ - pouziva js RegExp (posix) (interval.cz 2001/2010, abclinuxu.cz 2008, itnetwork.cz 2013, linux root.cz 2000)
~ - ted zrovna nemuzu najit zdroje
# - php.net/preg_match ( 20 Yousef Ismaeil Cliprz - pouziva / i #, jinak je tam spis /)
nic - pouziva napr java, vba (vba lasakovi.com 2016).

 
Nahoru Odpovědět
11.6.2018 11:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.