2012-04-01 13 views
0

Kann mir jemand sagen, warum das nicht funktioniert? Es gibt immer false zurück.Suche nach neuen Zeilen in einer Zeichenfolge

$str = "huuhhu\r\n\r\nmoo.com\r\nwww"; 

if (preg_match('/(\\n|\\r\\n|\\r)/', $str) === true) { 
    echo "True"; 
} else { 
    echo "False"; 
} 
+0

einfach eine Anmerkung: Sie müssen nicht die doppelt Fluchten für den regex da du bist einfache Anführungszeichen verwenden. ''/ (\ n | \ r \ n | \ r) /' 'funktioniert auch. –

Antwort

4

preg_match gibt true nicht zurück. Es gibt die Anzahl der Übereinstimmungen zurück. Sie müssen dies tun:

$str = "huuhhu\r\n\r\nmoo.com\r\nwww"; 

if (preg_match('/(\\n|\\r\\n|\\r)/', $str)) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

Auch könnten Sie wahrscheinlich Ihren Ausdruck zu dieser vereinfachen:

'/\n|\r\n?/' 
+0

Sorry php n00b hier, aber sicher, wenn (0) ist falsch in PHP und wenn (1), wenn (2), wenn (3) usw. sind wahr wie in fast jeder anderen Sprache? – Beeblbrox

+1

Ja. Aber die Verwendung von '===' berücksichtigt auch 'type' und eine 'ganze Zahl' ist nicht der gleiche Typ wie eine 'boolesche'. Sie können '== true' machen, wenn Sie möchten, aber das ist genau das gleiche wie das Ignorieren von allem zusammen. – MichaelRushton

+0

@MichaelRushton ... vielen Dank! – Brett

2

preg_match() gibt die Anzahl der Musterspiele und FALSE, wenn ein Fehler aufgetreten ist. Es gibt nie true zurück.

Verwandte Themen