2017-04-14 3 views
-1

Ich versuche, ein Regex-Muster zu finden, die eine Zeichenfolge entspricht, und alles nach dieser Zeichenfolge bis '/' zurückgeben. Ich habe zur Zeit:PHP Regex - Wort finden und alles bis Zeichen

'/forums\/topic\/\s*([^\/]*)/u' 

aber dies gibt alles, einschließlich Foren/Thema/'

Beispiel: string:

equest lorem ipsum dawhdk scripts. Problem: a href="__;_base_url_j;p_i;oj/index.php?/forums/topic/975-example-maps-to-local-rating/" then does something, 

Ich brauche nur „975-example-Karten-to-local -Rating“

+0

Ihren Ausdruck Vereinfachen: Verwenden Sie etwas anderes als '/' für das Muster-Begrenzer Dann musst du dem Muster nicht entkommen. – alanlittle

+0

Ihr Regexp funktioniert hier: https://regex101.com/r/vv6f9P/1 – Barmar

+0

Es klingt, als ob Sie das gesamte Spiel statt nur erfassen Gruppe 1 betrachten. – Barmar

Antwort

1
$pat = '=forums/topic/\s*([^/]*)=u'; 
$str = 'equest lorem ipsum dawhdk scripts. Problem: a href="__;_base_url_j;p_i;oj/index.php?/forums/topic/975-example-maps-to-local-rating/" then does something,'; 

preg_match($pat, $str, $match); 

var_dump($match); 

Ausgang:

array(2) { 
    [0]=> 
    string(45) "forums/topic/975-example-maps-to-local-rating" 
    [1]=> 
    string(32) "975-example-maps-to-local-rating" 
} 
1

können Sie einen regulären Ausdruck wie folgt verwenden:

.*/(.*)/ 

Working demo

Php Code

$re = '~.*/(.*)/~'; 
$str = 'equest lorem ipsum dawhdk scripts. Problem: a href="__;_base_url_j;p_i;oj/index.php?/forums/topic/975-example-maps-to-local-rating/" then does something, '; 

preg_match_all($re, $str, $matches); 

// Print the entire match result 
var_dump($matches); 
Verwandte Themen