Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

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

PHP PHP Nefungují regularní výraz na rozpoznání normální url od url Wikipedie American English version English version

Aktivity (1)
Avatar
Matěj Strnad:10. června 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. června 9:21
Odpovědět 10. června 9:20
Ty vaše internety!
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Matěj Strnad
Petr Čech:10. června 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. června 15:32
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 10. června 15:31
the cake is a lie
Avatar
Matěj Strnad:10. června 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. června 15:34
Ty vaše internety!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. června 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  +1 11. června 8:02
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. června 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. června 8:06
 
Nahoru Odpovědět 11. června 8:05
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Peter Mlich
Petr Čech:11. června 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. června 8:41
the cake is a lie
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Petr Čech
Peter Mlich:11. června 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  +3 11. června 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.