String durchsuchen

Sasser

Erfahrenes Mitglied
Guten Abend!

Ich habe einen String, welchen ich nach einer # gefolgt von einer ID gefolgt von einer # durchsuchen möchte.

Dazu habe ich mir folgende Funktion gebaut:

PHP:
function search ($id, $string) {
if (preg_match ( "!#" . $id . "#!", $string ) == true) {
				return true;
			} else {
				return false;
			}
}

Leider funktioniert diese Funktion überhaupt nicht und ich kann den Fehler nicht finden. Lange Zeit habe ich diese so genutzt nur ist mir nun aufgefallen dass diese fehlerhaft ist. :(

Das obere ist nur ein Ausschnitt, also nicht wundern dass ich die Funktion preg_match nicht gleich nutze.

Ich danke für eure Hilfe :)
 
Du könntest es so lösen:
PHP:
<?php
function search($id, $string) {
    return (bool) strstr($string.'A', '#'.$id.'#');
}
?>
 
Zuletzt bearbeitet:
Mir hilft immer http://www.regex-tester.de/regex.html

Wenn Nix gefunden wird, gibt preg_match 0 raus und nicht false, das heisst dein if ist immer true! Laß das ==true weg, das sollte reichen.

PHP:
function searchid ($id, $string) {
 $pattern="/#".$id."#/";
 if (preg_match ( $pattern, $string )) {
                return true;
            } else {
                return false;
            }
}

mfg chmee

p.s.: @einfach nur crack : Wahrlich, in der Kürze liegt die Würze :D
 
Danke für die superschnelle Antwort!

Nun stellt sich mir aber die Frage, warum eine andere IF-Abfrage von mir einwandfrei funktioniert.

Bei dieser überprüfe ich einen String auf Sonderzeichen:

PHP:
if (preg_match ( "/^([\d\w\ä\ö\ü\ ]+)$/", $user ) == false) {
		echo "Fehler!";
	}
 
Zuletzt bearbeitet:
So, ich habe nun meine IF-Abfrage so umgebaut, jedoch noch genau der gleiche Fehler wie zuvor:

PHP:
if (preg_match ( "/#" . $id . "#/", $string )) {
				$status = true;
			} else {
				return false;
				break;
			}

// Edit: Fehler wurde gefunden und lag an einer anderen Stelle im Script ...

Vielen Dank!
 
Zuletzt bearbeitet:
Zurück