2017-03-02 2 views
-3

I wie unten haben, ein preg_match Ausdruckkorrekte preg_match in PHP benötigen

$is = 'rest("docs/lasit_uct/iii_a_3_a_1_r.php?hostimage=&hostvista=")'; 
preg_match('/docs\/*.[^.php]*/', $is, $match); 

result is => XXXX/YYYYY/hello_a_13_a_12_r

Aber das, wenn ich andere Argument übergeben, wie unten,

$is = 'rest("docs/lasit_uct/iii_a_3_a_1_i.php?hostimage=&hostvista=")'; 
preg_match('/docs\/*.[^.php]*/', $is, $match); 

result is => XXXX/YYYYY/hello_a_13_a_12_

das letzte Zeichen 'h' fehlt. Warum das?. Ich habe das gleiche Problem, wenn ich auch das Zeichen 'p' passiere. Was ist die Änderung, die ich in dem Ausdruck machen muss, um auch h zu bekommen?

Ich versuchte die folgenden Codes für korrekte Ausgabe .. aber kein Glück.

preg_match('/(docs\/.?).php/', $onClickLink, $match); 

und

preg_match('/docs\/.+\((.+)(?=.php)/', $onClickLink, $match); 

Bitte Ratschläge zu diesem

+2

Weil '[^ .php]' mit einem anderen Zeichen als '.',' p' und ** 'h' ** übereinstimmt. Was war deine Absicht? Übrigens, es sieht so aus, als hättest du nicht den richtigen Code gepostet, die Beispielstrings stimmen überhaupt nicht überein –

+1

Es passt nichts, weil du keine 'docs' in deinen Strings hast. Bitte zeigen Sie den echten Code. – Toto

+0

@ WiktorStribiżew Ich möchte das oben erwähnte Ergebnis (XXXX/YYYYY/hallo_a_13_a_12_h oder XXXX/YYYYY/hello_a_13_a_12_p), als ich den Parameter in preg_match –

Antwort

0

Schließlich i einen Ausdruck gefunden für die korrekte Ausgabe für meine Eingabeargumente zu bekommen,

preg_match('/(docs.+)(?=.php)/', $input_string, $match); 

Danke für deine Antworten. Der obige Ausdruck gibt die erwartete Ausgabe die ganze Zeit zurück.

0

Verwenden Sie das folgende RegexMuster:

$re = '/docs\/.+\((.+)(?=.php)/'; 
preg_match($re, 'docs/test(XXXX/YYYYY/hello_a_13_a_12_h.php?t1=23&t2=45', $match); 
print_r($match[1]); 

Der Ausgang:

XXXX/YYYYY/hello_a_13_a_12_h 

(.+)(?=.php) - Spiele Zeichensequenz (.+), die von .php folgt (sichergestellt durch Look-Ahead-positive Behauptung (?=.php))

+0

Bitte ändern Sie den Code ohne "Test". weil einige der Argumente, die Text variieren. –

+0

kein Problem, überprüfen Sie mein Update – RomanPerekhrest

+0

Bitte sehen Sie meine Frage es wurde aktualisiert. –