Zeichenfolge bearbeiten

JesusFreak777

Erfahrenes Mitglied
Hallo,
ich habe eine beliebige zeichenfolge z.B.

hier_ist_eine_beliebige_Zeichenfolge

oder

hier_ist_eine_beliebige

[es kommen nie leerzeichen vor]

ist es jetzt möglich ab nen bestimmten wert bist zu nen bestimmten wert zu ersetzen?

z.B.

//es gibt immer nur eine möglichkeit
if "_Zeichenfolge" vorhanden
zwischenraum von "eine_" bis "_Zeichenfolge" ersetzen duch "bestimmte"
else
ab "eine_" ersetzen duch "bestimmte"

ergebniss

hier_ist_eine_bestimmte_Zeichenfolge

oder

hier_ist_eine_bestimmte

geht sowas?
Danke
 
Sicher geht das: Mit regulären Ausdrücken kannst du nach dem zu ersetzendem Wert suchen und ihn durch etwas anderes erstzen:

PHP:
$str = "Was auch immer hier drinne falsch sein soll...";
echo preg_replace("/falsch/", "richtig", $str);
 
danke,

so war das nicht gemeint,... evtl hab ich mich Falsch ausgedrückt,... belibige ist eine unbekannte,...

aber ich hab was gefunden,...

PHP:
$string1 = "hier_ist_eine_beliebige_Zeichenfolge";
$string2 = "hier_ist_eine_beliebige";

$string1 = preg_replace('|^(.*eine_).*(_Zeichenfolge.*)$|', "$1bestimmte$2", $string1); 

$string2 = preg_replace('|^(.*eine_).*(.*)$|', "$1bestimmte$2", $string2); 

echo $string1;
echo "<br>";
echo $string2;

jetzt fehlt mir nur noch die möglichkeit zwischen string einz und string zwei zu unterscheiden,...

wie kann ich das mit z.B. if else ob ich jetzt methode Sting1 oder methode Sting2 nehmen muss?

und evtl. kann mir ja einer mal genauer erklöären was dass alles bedeutet
'|^
(.*)
.*
(.*)
$|
$1
$2


edit:
gibt es auch eine möglichkeit das gesuchte wort mit zu entfernen?
hier_ist_eine_beliebige_Zeichenfolge
entferne von "_eine" bis "_Zeichenfolge"
--> hier_ist


Danke
 
Zuletzt bearbeitet:
ich habe gerade ein sehr ähnliches Problem hier... und zwar möchte ich dynamisch ein SQL Query absetzen. Insofern dynamisch, weil die Anzahl der Datensätze je nach ausgefählter Formulargröße in der Eingabemaske variiert.

Im Ersten Schritt fülle ich also eine Variable mit den ganzen VALUES:

PHP:
$values = "(".$_POST["abholid".$i].", ".$_POST["colli".$i].", ".$_POST["geraete".$i].", ".$_POST["resttage".$i].")";

/* Ergibt bei 2 Zeilen zum Beispiel: "(5, 5, Notebooks, 30)(6,7,Tablets,10)" */

Ah... ich sehe gerade dass ich die ' vergessen habe... *lach*. Naja das tut jetzt beim eigentlichen Problem nichts zur Sache.

Wir kriege ich es jetzt hin dass )( durch ), ( ersetzt wird? habe versucht den oben genannten Beispielcode daraufhin anzupassen. Sprich "fehler" durch )( zu ersetzt. Das hat aber leider nicht geklappt. :/
 
Also, du hast den String '(5, 5, Notebooks, 30)(6,7,Tablets,10)'.

item: Wie soll er aussehen?

item: Was hast du schon probiert

item: Dein $values kann aus dem Code nur eine Zeile beinhalten. Also '(5, 5, Notebooks, 30)' oder '(6,7,Tablets,10)', jedoch nicht zusammengesetz.

Am einfachsten löst du es ohne replace
PHP:
//Ein Array mit allen 'Zeilen' erstellen
$rows = array();
//TODO: $lastId ermitteln
$lastId = 1;
for($i = 0; $i <= $lastId; $i++){
    //String zusammensetzen 
    $rows[] = "({$_POST["abholid{$i}"]}, {$_POST["colli{$i}"]}, {$_POST["geraete{$i}"]}, {$_POST["resttage{$i}"]})";
}
//Die Zeilen mit , getrennt zusammensetzen
$value = implode(',', $rows);
 
Also, du hast den String '(5, 5, Notebooks, 30)(6,7,Tablets,10)'.

item: Wie soll er aussehen?

item: Was hast du schon probiert

item: Dein $values kann aus dem Code nur eine Zeile beinhalten. Also '(5, 5, Notebooks, 30)' oder '(6,7,Tablets,10)', jedoch nicht zusammengesetz.

Genau das Problem hatte ich die ganze zeit.

zu 2.: am ende will ich ein Insert machen mit

[...]VALUES ('1','2','TFTs','10'), ('2','3','PCs','10'), (...usw. usf...)

Zu drittens:
PHP:
preg_replace(")(", "), (". $string);
hatte ich ausprobiert. das Ganze auch mit str_replace... immer ohne Erfolg.

Danke für deinen Lösungsvorschlag! Ich denke das wird mir sehr helfen :)
 
Der preg_replace währe (aber mit dem Array ist der schönere Ansatz)
PHP:
$string = preg_replace('/\)\(/', '),(', $string);
 
Zurück