ich bin schon fast am Verzweifeln...
Das wirst Du bals wieder sein - oder jemand anderes.
In dem String "QMF 71328_C Test" möchte ich aus dem "C" ein "D" machen und dann in eine MySQL-Tabelle speichern.
Mein erster Versuch war:
$string = "QMF 71328_C Test"; $rev = substr($string,10,1); $next_rev = ++$rev; $string[10] = $next_rev; $sql = "update tabelle set titel = '$string' where id = '123'";
Offensichtlich willst Du einfach das nächste Zeichen der ASCII-Tabelle nehmen. Das gänge als Einzeiler.
$string[10] = chr( 1 + ord( $string[10] ) );
Ich markiere das als „schlechten Code“, denn die ganze Methode bereitet mir Kopfschmerzen, die hat keine Zukunft:
<?php
# Nicht nachmachen!
$string = "QMF 71328_C Test";
for ( $i = 0; $i < 100; $i++) {
$string[10] = chr( 1 + ord( $string[10] ) );
echo $string.PHP_EOL;
}
Ergebnisse (Auswahl)
…
0 : QMF 71328_D Test
1 : QMF 71328_E Test
2 : QMF 71328_F Test
…
22 : QMF 71328_Z Test
23 : QMF 71328_[ Test
24 : QMF 71328_\ Test
…
29 : QMF 71328_a Test
30 : QMF 71328_b Test
31 : QMF 71328_c Test
…
54 : QMF 71328_z Test
55 : QMF 71328_{ Test
…
60 : QMF 71328_� Test
61 : QMF 71328_� Test
…
188 : QMF 71328_ Test
189 : QMF 71328_ Test
190 : QMF 71328_ Test
191 : QMF 71328_ Test
192 : QMF 71328_ Test
193 : QMF 71328_ Test
194 : QMF 71328_ Test
195 : QMF 71328_ Test
196 : QMF 71328 Test
197 : QMF 71328_ Test
198 : QMF 71328_
Test
199 : QMF 71328_
Test
200 : QMF 71328_
Test
Test QMF 71328_
…
221 : QMF 71328_! Test
222 : QMF 71328_" Test
…
236 : QMF 71328_0 Test
237 : QMF 71328_1 Test
…
245 : QMF 71328_9 Test
246 : QMF 71328_: Test
247 : QMF 71328_; Test
…
252 : QMF 71328_@ Test
253 : QMF 71328_A Test
254 : QMF 71328_B Test
255 : QMF 71328_C Test
256 : QMF 71328_D Test
…
DAS wirst Du nicht wollen, Dein Auftraggeber wohl auch nicht. Bevor das aufscheinende Problem aus Sicht des Programmierers gelöst werden kann muss es eine bessere Vorschrift
- für den Aufbau des Strings und
- für die Ermittlung des Kennzeichens der "neuen Version" (Bei Dir war das "C"→"D") geben.