japo: Hochkomma ersetzen

Hallo zusammen,

ich weiß, die Frage klingt ein wenig unterfordernd, aber mal sehen :P

Ich erhalte per Post aus einem Textfeld folgenden String:
f'(x) = whatever

Dieser String wird als Argument an die Shell weitergegeben, deshalb soll das Hochkomma ' durch ''' ersetzt werden. Seltsamer weise findet str_replace das ' nicht (bzw. ersetzt es nicht?!?).

Wenn ich sowas wie

$test = "f'(x)";
echo str_replace("'", "ERSETZT");

mache, funktioniert das ganze auch wunderbar, aber eben nicht wenn ich den String von außen bekomme.

Evtl. stehe ich gerade einfach nur ziemlich auf der Leitung, aber irgendwie will mir nichts (mehr) einfallen. Hätte da jemand was für mich?

lg, japo

  1. Hallo zusammen,

    Hallo.

    ich weiß, die Frage klingt ein wenig unterfordernd, aber mal sehen

    Ja, *gähn* ;-).

    mache, funktioniert das ganze auch wunderbar, aber eben nicht wenn ich den String von außen bekomme.

    Wende doch auf den String, der per post übermittelt wird htmlentities($str, ENT_QUOTES) an.

    Gruß, Volker

  2. hi,

    Ich erhalte per Post aus einem Textfeld folgenden String:
    f'(x) = whatever

    Dieser String wird als Argument an die Shell weitergegeben, deshalb soll das Hochkomma ' durch ''' ersetzt werden. Seltsamer weise findet str_replace das ' nicht (bzw. ersetzt es nicht?!?).

    Wenn ich sowas wie

    $test = "f'(x)";
    echo str_replace("'", "ERSETZT");

    mache, funktioniert das ganze auch wunderbar, aber eben nicht wenn ich den String von außen bekomme.

    Dann ist das "Hochkomma" vermutlich gar kein Hochkomma.

    Entweder stimmen Kodierung von Script und Eingabe nicht überein - oder es ist ein anderes, ähnlich aussehendes Zeichen. Letzteres lässt sich evtl. mittles ord(), angewandt auf das Zeichen an der entsprechenden Stelle im String, überprüfen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo japo.

    Ich erhalte per Post aus einem Textfeld folgenden String:
    f'(x) = whatever

    Dieser String wird als Argument an die Shell weitergegeben, deshalb soll das Hochkomma ' durch ''' ersetzt werden.

    Du möchtest escapeshellarg nutzen?

    Einen schönen Dienstag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  4. Huhu, danke für die schnellen Antworten

    escapeshellarg benutze ich... das frustrierende is, dass das Hochkomma tatsächlich keines zu sein scheint. Es wird von escapeshellarg nicht maskiert, aber innerhalb der Shell knallt es dann trozdem.

    htmlentities macht aus dem Hochkomma ein &amp;#039 ^^ das ganze dann reverse_htmlentities zurückkonvertieren, dann wirds ein &#039;

    Das ersetzte ich mit str_replace durch chr(39)."\".chr(39).chr(39) und siehe da, er ersetzt es. Allerdings benutze ich jetzt nichtmehr escapeshellarg weil es meine maskierten Pseudohochkommata jetzt aufeinmal doch maskieren will. ^^

    Naja, escapeshellarg dürfe jetzt ohnehin unnötig werden, oder?

    Aber was ich nicht ganz rallen will. Die Inet-Seite ist utf8 kodiert. Mein Editor ist auch auf utf8 eingestellt. Wenn ich den String untersuche bekomme ich als Zeichencode den ASCII(?)-Wert und überschreibe diesen gezwungener maßen durch chr() wieder mit einem ASCII  Wert. Was ist jetzt mit utf8?

    Ich bin verwirrrrt :]

    Danke für die Hinweise!