2017-05-22 2 views
0

Ich arbeite an einem "Wiki-Spiel" mit PHP, und ich möchte alle Links in einer Zeichenfolge beginnend mit /wiki/something, zum Beispiel /wiki/Chiffrement_RSA oder /wiki/OSS_117_:_Le_Caire,_nid_d%27espions. Ich kenne nur ein paar Sachen über REGEX, also bin ich struct. Wenn mir jemand helfen könnte, wäre es nett. Für die Zeit habe ich nur \/wiki\/* ... Danke für Ihre Hilfe!Auswählen bestimmter Links mit einem REGEX

+1

Ich würde empfehlen, die strpos wie unten beschrieben zu verwenden. Aber wenn Sie eine Regex verwenden wollen, fängt dies alles bis zum ersten Leerzeichen ab, dann funktioniert \/wiki \/([^] +). Wenn Sie Regex testen möchten, versuchen Sie http://regexr.com –

Antwort

0

Ich wählte Antwort des Cody.code schließlich mit dieser Regex: \/wiki\/([^ ]+). Ich werde diesen Code verwenden, um zu überprüfen, ob ich einen Link in einem Array halte oder nicht (ich werde meine HTML mit DOMDocument analysieren und alle <a> bekommen, es ist schneller), also ist die preg_match() Lösung die beste für mich, statt strpos. Danke für Ihre Hilfe!

2

Sie können regex oder strpos tun:

<?php 
$mystring = 'abc'; 
$find = '/wiki/'; 
$statusLink = strpos($mystring, $find); 

// Note our use of ===. Simply == would not work as expected 
// because the position of 'a' was the 0th (first) character. 
if ($statusLink === false) { 
    echo "Not the link that you want"; 
} else { 
    echo "You found the link"; 
} 

//or by explode 
    $link = explode('/', $originalLink); 
    if ($link[1] == 'wiki' && isset($link[2])){ 
    //is your link 
    } 
?> 

I don't use pure regex so much unless it's very necessary.

1

Sie können die Größe Ihres Ausgangsarrays um 50% reduzieren, indem Sie \K in Ihrem Muster verwenden. Es eliminiert die Notwendigkeit einer Erfassungsgruppe und fügt die gewünschten Teilzeichenfolgen in das Array "fullstrings" ein.

Muster:

\/wiki\/\K[^ ]+ 

\K sagt "das fullstring Spiel starten von hier". Dies bedeutet keine Speicherverschwendung. Es mag eine Mikroverbesserung sein, aber ich glaube, es ist die beste Praxis, und ich denke, mehr Menschen sollten es nutzen.

Verwandte Themen