Prüfen, ob eine Variable ein String ist

Wie in PHP herausgefunden werden kann, ob eine bestimmte Variable ein String ist

1. is_string()

Die Funktion is_string($var) gibt zurück, ob die übergebene Variable ein String ist:

PHP-Code
<?php
    var_dump( is_string('fubar') ); // true
	var_dump( is_string('') ); // true
	var_dump( is_string('1') ); // true
	var_dump( is_string('false') ); // true

	var_dump( is_string(1) ); // false
	var_dump( is_string(0) ); // false
	var_dump( is_string(1.0) ); // false
	var_dump( is_string(false) ); // false
	var_dump( is_string(new stdClass()) ); // false

	class Example {
		public function __toString() {
			return 'Example';
		}
	}
	$obj = new Example();
	var_dump( is_string($obj) ); // false
	var_dump( is_string((string)$obj) ); // true
	var_dump( is_string($obj->__toString()) ); // true
?>

HTML-Code: Ausgabe
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)


Während in Java ein String auch NULL sein kann, ist dies in PHP nicht möglich. Gibt is_string() also true zurück, dann kann man sich darauf verlassen, dass die Variable nicht NULL ist.

2. Funktionsparameter prüfen

Sinnvoll ist die Verwendung von is_string() zum Überprüfen von Funktionsparametern:

PHP-Code
<?php
	function startsWith($str, $with) {
		if (!is_string($str) || !is_string($with)) {
			// Fehlerbehandlung, z.B. Exception
			throw new Exception('Die Parameter $start und $with muessen beide Strings sein.');
		}
		
		return (strpos($str, $with)===0);
	}


	try {
		var_dump(startsWith('Hochhaus', 'Hoch')); // true
		var_dump(startsWith('Garten', 'See')); // false
		var_dump(startsWith('42', 4)); // Exception
	} catch (Exception $e) {
		echo($e->getMessage());
	}
?>

HTML-Code: Ausgabe
bool(true)
bool(false)
Die Parameter $start und $with muessen beide Strings sein.