2016-12-03 1 views
0

Ich möchte bestimmte Links von einer Website extrahieren.extrahieren bestimmte Links von einer Website in PHP

Die Links sehen wie folgt aus:

/topic/Funny/G1pdeJm 

Die Links sind immer gleich - mit Ausnahme der letzten Zufalls Zeichen.

ich bin immer schwer, diese Teile zu kombinieren

(preg_match("/^http:\/\//i",$str) || is_file($str)) 

und

(preg_match("/Funny(.*)/", $str) || is_file($str)) 

erster Code Extrakt jeden Link zweiten Auszug aus den Links nur das/Thema/Funny/* Teils.

unglücklicherweise kann ich sie nicht kombinieren, wollen auch ich auch diese Tags blockieren:

/topic/Funny/viral 
/topic/Funny/time 
/topic/Funny/top 
/topic/Funny/top/week 
/topic/Funny/top/month 
/topic/Funny/top/year 
/topic/Funny/top/all 

Irgendwelche Ideen?

Danke, Chim

Antwort

1

Sie negatives Lookaheads mit versuchen, könnten Sie die Urls „herauszufiltern“ nicht mag:

.*\/Funny\/(?!viral|time|top\/week|top\/month|top\/year|top\/all|top(\n|$)).* 

demo here

+0

denke ich, ist es schön sein, wenn Sie setzen es innerhalb der 'preg_match' so das OP wird die Verwendung dieser Regex verstehen :) – Dekel

+0

ehrlich gesagt, ich bin ein Regex-Typ, kein PHP-Typ, oder ich würde das tun :) – sweaver2112

+0

thx eine Tonne! Dieser Regex scheint perfekt zu sein, aber leider, wie @Dekel sagte, kann ich es in meinem Skript nicht zum Laufen bringen: – chim

Verwandte Themen