Autor Zpráva
unlucky
Profil
Potřeboval bych pomoc s regulárama:

Na stránce mám několik řetězců
video?c=17
video?c=5
atd...

potřeboval bych získat to číslo za "c". Za číslem už jsou pouze uvozovky.
zkoušel jsem:

~video\?c=(.*)>~
/video?c=([^ ]*)/i


ale jak si to nefunguje :P

předem děkuji
AM_
Profil
první výraz nefunguje, protože .* požere všechno, musíš ji udělat ungreedy (.*? nebo dát nakonec modifikátor U)
druhý výraz nefunguje? protože bere:
videoc=(cokoliv bez mezery) nebo videc=(cokoliv bez mezery)
ano, neoescapoval jsi otazník. V prvním výraze už jsi to měl ;)

// jinak nezapomínej, že pokud máš regulár v uvozovkách ", musíš všechna zpětná lomítka psát zdvojená, protože první si escape sekvence přebere PHP a pak až regulár. raději je piš do apostrofů; sry jestli radím něco co už víš, z ukázky to není jasné.
unlucky
Profil
AM:
první výraz nefunguje, protože .* požere všechno, musíš ji udělat ungreedy (.*? nebo dát nakonec modifikátor U)

~video\?c=(.?)~


bere pouze 1 cislo

druhý výraz nefunguje? protože bere:
videoc=(cokoliv bez mezery) nebo videc=(cokoliv bez mezery)
ano, neoescapoval jsi otazník. V prvním výraze už jsi to měl ;)

/video\?c=([^\\"]*)/i


uz funguje. Predtim jsem oscapoval pouze jednou.

Ale vrací mi to pořád video?c=cislo. Chci pouze číslo. Lze to nějak přímo? nehcci to dělat přes substr atd..
Keeehi
Profil
~video\?c=(.*?)~
Tentokrát jsi zase zapoměl na *.
unlucky
Profil
Keeehi:
ee, na hvězdičku jsem nezapomněl. Nefungoval by
jsim
Profil
$videos = array('video?c=15', 'video?c=1', 'video?c=154', 'video?c=');

preg_match_all('/video\?c=([0-9]{1,})/', implode(' ', $videos), $matches);

var_dump($matches[1]);


by mohlo fungovat...
Keeehi
Profil
/video\?c=(\d+)/
Toto funguje určitě.
AM_
Profil
unlucky:
ee, na hvězdičku jsem nezapomněl. Nefungoval by
to máš nějakou porouchanou věšteckou kouli, on by totiž fungoval (otazník za kvantifikátorem z něj dělá ungreedy kvantifikátor)

musíš vyzvedávat $matches[1], $matches[0] je vždy celý matchnutý string

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