2009-07-01 20 views
1
function escCtrlChars(str) 
{ 
    return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, 
      function(c) { 
       return '!' + c.charCodeAt(0) + '!'; 
    }); 
} 

Ok das ist eine Funktion, die Steuerzeichen aus einem String mit einem anderen String beginnend und endend mit !Wie kann ich diese JavaScript-Funktion in PHP konvertieren?

Meine Frage ist, ersetzt. Ist c das Zeichen gefunden, während str durchlaufen?
Wenn ja, wie können Sie diese Funktion in PHP nachahmen?

function escCtrlChars($str) 
{ 
    return preg_replace('/[\0\t\n\v\f\r\'\"!-]/i', "!".ord($str[0])."!", $str); 
} 

Ich hatte dies in PHP, aber ich weiß jetzt, es falsch ist (da es die Zeichenfolge verwendet und nicht das Zeichen gefunden)

Antwort

4

Versuchen:

function escCtrlChars($str) 
{ 
    return preg_replace('/([\0\t\n\v\f\r\'\"!-])/ie', '"!".ord(substr("$1",0,1))."!"', $str); 
} 

Die e-Modifikator gibt an, dass der Code im zweiten Argument sollte ausgeführt werden. Dies geschieht im Wesentlichen durch Erstellen einer neuen Funktion mit create_function(), die für jede Ersetzung ausgeführt wird. Sie müssen auch eine Paranthese hinzufügen, um das Muster zu erfassen.

es wie folgt aus:

$str = "foo\n\t'bar baz \rquux"; 
echo escCtrlChars($str)."\n"; 

Ausbeuten:

foo!10!!9!!92!bar baz !13!quux 
+0

, dass eine ordentlich functinality ist, ich bin nicht die richtigen Ergebnisse obwohl bekommen. Nachsehen, ob etwas anderes es behindert. –

+0

Ich werde den Code versuchen und sehen, ob ich den Fehler erkennen kann. Warten Sie mal. –

+0

Sie haben anschließend die Klammer hinzugefügt. Sie haben es geschafft. –

Verwandte Themen