1

次の Java 関数に相当する PHP は何ですか?

str = org.apache.commons.lang.StringEscapeUtils.unescapeJava(str);

この関数はApache Commons Langにあり、関数の説明は次のとおりです。

文字列で見つかった Java リテラルのエスケープを解除します。たとえば、'\' の前に別の '\' がない限り、'\' と 'n' のシーケンスを改行文字に変換します。

編集

私が見つけた1つの解決策はこれです

echo json_decode('"' . $str . '"');

しかし、それには他のエレガントな解決策が必要だと思います。

編集 2

@julp が提案したように、transliterate別のオプションですが、PHP 5.4 以降でのみ機能します。残念ながら、私はまだ PHP 5.3 を使用しており、PHP 5.3 で動作するソリューションが必要です。

4

2 に答える 2

3

PHP >= 5.4 および intl 拡張では、次Transliteratorのクラスがあります。

$in = '\u0041\U00000062';
$out = transliterator_create('Hex-Any')->transliterate($in);
var_dump($out); # string(2) "Ab"
于 2012-12-10T15:00:06.047 に答える
0

PHP文字列は、Javaバイト配列に相当します。それらは(定義上)256ビットの文字セット(バイト0x00-0xff)です。ただし、PHP文字列構文では、二重引用符で囲まれた文字列内の特定のエスケープ文字シーケンスの補間がすでに提供されています(詳細については、マニュアルページを参照してください)。

ただし、JSONでエンコードされた文字列を受信する場合、json_decode関数はその文字列をPHPに適切にデコードします(JSON仕様に準拠している場合)。

$json_string = '"Hello\nWorld"';
var_dump(json_decode($json_string));
/*
Notice that the string output is 11 characters long and a line break character is present

string(11) "Hello
World"
*/
于 2012-12-10T14:49:55.820 に答える