dedlfix: string vergleichen in php

Beitrag lesen

Tach!

$haystack = '🎷🎸🎹🎺🎻';
$needle = '🎸🎹';

var_dump(strpos($haystack, $needle));     // int(4)
var_dump(mb_strpos($haystack, $needle));  // int(1)

Das ist ein Versuchsaufbau der nicht zur Aufgabenstellung "beginnt mit" passt.

Aber zu „Gefragt ist keine genaue Position.“

Ja, das schon, aber war das denn im OP gefragt? Jedenfalls widerlegt das nicht meine Antwort, in der ich mich auf das Vorkommen am Anfang und nicht in der Mitte bezog.

Ich gehe aber davon aus, dass aus technischer Sicht gemeint war: der Aufruf der Funktion get_post_meta() soll einen String liefern/zurückgeben, der mit VRVR anfängt. Oder aus Anwendersicht: die Eingabe soll mit VRVR anfangen.

Und selbst wenn stattdessen eine beliebige Position gewünscht war, so ist auch nicht dessen genaue Zahl interessant. Dann würde ein typsicherer Vergleich mit false auch in beiden Fällen die gewünschte Aussage treffen.


Es gibt lediglich ein Problem wenn Zeichen in composed Form mit solchen in decomposed Form vergleichen werden sollen, aber das kann auch mb_strpos() nicht. Dazu müsste man vorher einen Normalizer (PECL, nicht überall installiert) drüberlaufen lassen, danach ist es aber auch wieder egal, ob man für "beginnt" oder "enthält" mb_strpos() oder strpos() nimmt.

dedlfix.