Autor Zpráva
Jack06
Profil
Chtěl bych se zeptat, zda jde a jak napsat regulární výraz, který mi vypíše ze string řetězce vše co bude v a href, tedy veškeré odkazy vnitřní i ven tzn:

<a href=toto vypsat ></a>
<a href='toto vypsat' ></a>
<a href="toto vypsat" ></a>


Psal jsem již jeden podobný dotaz, ale nebyl domyšlený, adresy se totiž nemusí vždy psát absolutně.. někdy je někdo píše i jen jako: index.php a tak.. tak díky za pomoc
Majkl578
Profil
preg_match('~<a href=(["\']|)(.*)\\1 >~U', '<a href=\'toto vypsat\' ></a>', $m);
var_dump($m[2]);
Jack06
Profil
Zkoušel jsem to vypsat, ale píše mi to NULL.. přišel jsem na to kde je zrada.. tou mezerou za tím co chci vypsat jsem myslel, že to může dále pokračovat, jako třeba class="neco" atd. tedy aby to bralo to co je v href a jako konec toho co chci vypsat bralo tedy: uvozovky (href="chci vypsat"), apostrof (href='chci vypsat'), mezeru (href=chci vypsat class=active), špičatou závorku (href=index.php>)

to jsou tedy jediné možnosti, které mě napadají.. Je právě naprd, že to není sctrict a může být za rovná se mezera, ale nemusí, může to být v uvozovkách, ale nemusí a to samé s apostrofama atd. :-( Jinak díky za ochotu, asi se budu muset naučit ty regulární výrazy, neboť je to jak koukám potřeba více a více.
$string = htmlspecialchars(file_get_contents("http://www.superpokec.cz/"));
preg_match('~<a href=(["\']|)(.*)\\1 >~U', $string, $m);
var_dump($m[2]);
tiso
Profil
Jack06: učením sa nič nepokazíš, práve dnes vyšiel článok o regulárnych výrazoch na intervale. Prvý diel si nečítaj.
Jack06
Profil
NU, tak jsem trochu postoupil, ale ještě nevím, jak omezit aby před a za rovná se mohlo být mezer kolik chce.., kdyžtak se pls podívejte, jestli to co jsem upravil jsem vůbec upravil dobře.

preg_match('^href *=(["|\']|)(.*)(["|\']| |$)^U', "<a href    =index.php class='a'>asdf</a>", $m);
var_dump($m[2]);


nicméně pořád nechápu proč mi to nebere ty uvozovky, apostrof, nebo mezeru prostě jako poslední znak který to brát :-( .. když tam je mezera, tak to funguje jak má, ale jakmile tam jsou uvozovky například, tak to bere ještě x znaků za tím.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0