it-swarm.com.de

JDatenbank: Ermitteln eines Teils der Zeichenfolge, der nicht mit der Zeichenfolge $ X übereinstimmt

Ich benutze einige MySQL-Abfragen, um Daten aus einer Jdatabase-Tabelle als Strings abzurufen. Jetzt muss ich den Teil der Zeichenfolge finden, der nicht mit einer anderen Zeichenfolge übereinstimmt (, die tatsächlich eine Unterzeichenfolge der Hauptzeichenfolge ist ). Es ist ein bisschen verwirrend, aber das folgende Beispiel macht es einfach zu verstehen.

Hauptstring: 23/CSE/4/2014

Sub-String: /CSE/4/2014

Erforderliche Ausgabe : 23

Was wäre nach Joomla-Codierungsstandards der beste Weg, um dies zu erreichen?

2
saibbyweb

Wenn die Zeichenfolge immer durch Schrägstriche getrennt ist und Sie den ersten Wert erhalten möchten, können Sie sie in ein Array wie das folgende auflösen:

$string = '23/CSE/4/2014';
$array = explode('/', $string);

echo $array[0]; // 23
echo $array[1]; // CSE
echo $array[2]; // 4
echo $array[3]; // 2014
1
Lodder

Sie haben keine Details zur Variabilität Ihrer Eingabezeichenfolgen angegeben, sodass wir nur die Herausforderungen annehmen können, mit denen Sie möglicherweise konfrontiert sind.

Befindet sich Ihre Unterzeichenfolge immer auf der rechten Seite des Werts, den Sie isolieren möchten, gilt Folgendes:

Demo

$main_string = "23/CSE/4/2014";
$sub_string = "/CSE/4/2014";
echo str_replace($sub_string, '', $main_string);
// 23

Wenn der zu isolierende Wert auf beiden Seiten des Unterstrings vorhanden sein kann, erledigt dies die Aufgabe:

Demo

$main_string = "23/CSE/4/2014";  // or "CSE/4/2014/23"
$sub_string = "CSE/4/2014";  // notice no leading/trailing slash on this value
echo trim(str_replace($sub_string, '', $main_string), '/');  // leading/trailing slashes are trimmed
// 23

Wenn der zu isolierende Wert möglicherweise in den durch Schrägstriche getrennten Werten der Teilzeichenfolge verschachtelt ist, müssen Sie sich mit einer komplizierteren Herausforderung auseinandersetzen und die Datenformatierung möglicherweise überdenken.

Das Explodieren der Haupt- und Unterzeichenfolge und anschließende iterierte Vergleiche (oder ein array_diff() -Aufruf) zum Filtern der einzelnen Werte ist schwerfällig und/oder potenziell schädlich. Wenn der gewünschte Wert mit einem der durch Schrägstriche getrennten Werte für sub_string übereinstimmt, verlieren Sie das, was Sie suchen.

p.s. Da diese Frage aus irgendeinem Grund mit mysql getaggt ist, biete ich das MySQL-Äquivalent meines ersten Snippets an:

Demo

SELECT REPLACE('23/CSE/4/2014', '/CSE/4/2014', '')
// 23
0
mickmackusa