ugrás a tartalomhoz

Szervernév kinyerése URL-ből regexszel

eaposztrof · 2008. Feb. 22. (P), 07.17
a problema:
$url="http://eaposztrof.com/drupal";
preg_replace( '/(.*:\/\/)?([^ \/]*)([^ >"]*)/', '$2', $url )
// eaposztrof.com // jo!

$url="http://eaposztrof.com/?q=drupal";
preg_replace( '/(.*:\/\/)?([^ \/]*)([^ >"]*)/', '$2', $url )
// eaposztrof.com?q=drupal // rossz!
es megoldva.

$url="http://eaposztrof.com/drupal";
preg_replace( '/(.*:\/\/)?([^ \/\?]*)([^ >"]*)/', '$2', $url )
// eaposztrof.com // jo! 

$url="http://eaposztrof.com/?q=drupal";
preg_replace( '/(.*:\/\/)?([^ \/\?]*)([^ >"]*)/', '$2', $url )
// eaposztrof.com // jo! 
mar nem tudtam mit kezdeni vele amikor csak ugy kiprobaltam, es voala.
DE! nem ertem hogy miert kepes leforditani a "..com/drupal"-t is ha ott a "\?" kapcsolo
ez bug? vagy csak en nem ertem mi tortenik?
 
1

php?

randomly · 2008. Feb. 22. (P), 10.55
Szia!

Ha PHP akkor $_SERVER['SERVER_NAME'], nem tudom ez gyorsabb-e, de gondolom igen.

rand
2

Nálam jól működik

Török Gábor · 2008. Feb. 22. (P), 12.23
Biztos, hogy az idézett kódod futott nálad is rosszul? Nálam mind a négy példa helyes eredményt ad. Amúgy ha olyan reguláris kifejezést írsz, amiben a határolókaraktert is használod, akkor a felesleges escape-elgetések helyett egyszerűen válts egy másik határolókarakterre, pl. %-ra.
%(.*://)?([^ /]*)([^ >"]*)%