Hee hee, das wär’ ’ne feine Sache. Andererseits ändern sich natürlich »externe Softwares« auch mal, da wäre eine Anpassbarkeit schön. Allerdings habe ich in den letzten Wochen auch ziemlich rumgebastelt, bis ich denn nun endgültig sämtliche potentiell »gefährlichen« Varianten für CMD-Batchfiles rausgefunden und »entschärft« hatte.
Vielleicht mal so als Vorschlag »for the time being«: Wie wär’s, wenn man – vielleicht aufbauend auf einem »Gerüst« hier eine Liste der erfolgreich und gut funktionierenden »Escaping-Funktionen/-Aktionen« im Forum posten würde?
Als Anregung: Wie wäre es, wenn man statt »festen« String-Escape-Funktionen sowas allgemeines einbauen würde, wie etwa
$escape(source_string, liste_der_zu_escapenden_zeichen, escapestring_links, escapestring_rechts)
wobei
liste_der_zu_escapenden_zeichen
entweder eine Liste der Zeichen wäre (halte ich für unflexibel)
oder eine Liste der zu escapenden Strings (viel flexibler)
escapestring_links
der String oder das Zeichen, das zum Escapen links neben dem eigentlichen Zeichen/String eingefügt werden muss
escapestring_rechts
der String oder das Zeichen, das zum Escapen rechts neben dem eigentlichen Zeichen/String eingefügt werden muss (dieser Wert sollte optional weggelassen werden können)
Falls man eine »Liste der zu escapenden Strings« macht, wäre es natürlich sinnvoll, einen (optionalen) Parameter »Listentrennzeichen« zu haben, denn das ist sicher nicht immer gleich. (Wenn Listentrennzeichen angegeben, auswerten, sonst liste_der_zu_escapenden_zeichen als Einzelzeichen behandeln.)
Also etwa:
$escape(source_string, liste_der_zu_escapenden_zeichen, listentrennzeichen, escapestring_links, escapestring_rechts)
Dann gingen solche Sachen wie z.B. für Batch Files
$replace($escape(%string%,'<|>"&^',,^,),'%','%%')
oder für LaTeX (aus dem Kopf, könnte fehlerhaft sein)
$escape(%string%,'$&%#_{}~^',,{,})
oder für irgendwas (mir fällt grad kein Beispiel ein)
$escape(%string%,'der|die|das',|,'[',']')
$escape(%string%,'wer;wie;was',';','<<','>>')
Andererseits ist das alles natürlich nur ein bissl »verkapptes RegExp«, also mein Batch File-Beispiel oben könnte man auch bequem so schreiben:
$replace($regexp(%string%,('[''('')'<|>"&^']'{1}),^$1),'%','%%')
Mal sehen, was die Gemeinde und das Development so meinen 