Vergleichen Sie meta_query mit einem regulären Ausdruck und führen Sie eine Kleiner-als-Operation durch

Ich habe das Problem, dass mein Klient ein Thema benutzt, das Optionen von Gegenständen in einer serialisierten Weise in der post_meta Tabelle post_meta .

Ich habe bereits herausgefunden, dass dies nicht der beste Weg ist, um Werte zu speichern, besonders wenn Sie sie später abfragen wollen, aber das kann ich bisher nicht ändern.

Ich habe versucht, es mit der REGEXP Vergleichsoption der function meta_query() .

 $metaquery['meta_query'] = array( 'key' => '_ait-dir-item', 'value' => '*\"guestcount\";s:[0-9]+:\"'.$_GET['guestcount'].'\".*', 'compare' => 'REGEXP' ); $query->set('meta_query',$metaquery); 

So kann ich die Elemente mit der genauen Anzahl der Benutzereingaben finden.

Aber ich würde gerne alle Einträge mit guestcount >= input .

Wie wäre das möglich?

AKTUALISIEREN

Ich habe es jetzt ausprobiert, indem ich die Nummer für einen Bereich mit Regex überprüft habe (während der Regex zuvor erstellt wurde)

 $gc = (string)$_GET['guestcount']; //gc...guestcount $input_regex = $gc[0]; for($i=1;$i<strlen($gc); $i++){ $input_regex .= "[".$gc[$i]."-9]"; } $compare_regex = '|[2-9][0-9]{2}|[1-9][0-9]{3}|1[0-9]{4}|20000'; 

Der maximale Wert des Bereichs beträgt immer 20.000 .

Nun … ich bekomme keine Ergebnisse mit diesem … kann jemand einen Fehler darin sehen?

Das war für die input = 150 :

'value' => '*\"guestcount\";s:[0-9]+:\"\b(1|[5-9][0-9]{2}|[1-9][0-9]{3}|1[0-9]{4}|20000)\b\".*

Aktualisieren

Ich säuberte die Regex und entfernte th \b und die . und * und so … nun scheint es, dass ich alle Gegenstände finde, wo ein Gastcount eingetragen ist … also input=300 ich auch eine gefunden mit 250 guestcount

'value' => '\"guestcount\";s:[0-9]+:\"(1|[5-9][0-9]{2}|[1-9][0-9]{3}|1[0-9]{4}|20000)\"

Solutions Collecting From Web of "Vergleichen Sie meta_query mit einem regulären Ausdruck und führen Sie eine Kleiner-als-Operation durch"