2
A
回答
3
您可以使用preg_replace_callback
的Perl
my $var = 'ABCDEFGHIJKLMNOPQRSTUVWXWZabcdefghijklmnopqrstuvwxyz1234567890,.';
$var =~ tr/[A-Za-z,.]/[\000-\077]/;
print unpack("H*", $var), "\n";
PHP
$string = 'ABCDEFGHIJKLMNOPQRSTUVWXWZabcdefghijklmnopqrstuvwxyz1234567890,.';
$replace = preg_replace_callback("/[A-Za-z,.]/", function ($m) {
$n = 0;
if (ctype_punct($m[0])) {
$m[0] == "," and $n = - 8;
$m[0] == "." and $n = - 7;
} else {
$n = ctype_upper($m[0]) ? 65 : 71;
}
return chr(ord($m[0]) - $n);
}, $string);
print(bin2hex($replace));
兩個輸出
000102030405060708090a0b0c0d0e0f101112131415161716191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233313233343536373839303435
3
PHP具有使用陣列密鑰strtr函數=>值對,其中在字符串密鑰的實例被替換值。除此之外,就像@火箭所說的,你可以使用preg_replace_callback來獲得你的替換值。匹配的字符被傳遞給一個函數,並被函數返回的內容替換。
2
有人說PHP沒有相當於tr///
(儘管我現在看到它的確是strtr
)。如果是這樣,
$var =~ tr/A-Za-z,./\000-\077/;
可以寫成一個替代如下:
my %encode_map;
my $i = 0;
$encode_map{$_} = chr($i++) for 'A'..'Z', 'a'..'z', ',', '.';
$var =~ s/([A-Za-z,.])/$encode_map{$1}/g;
這應該是更容易轉化爲PHP,但不幸的是我不知道PHP。
(我假設在tr///
的[]
不應該在那裏。)
+0
+神奇故障... – Baba
相關問題
- 1. 這個Perl正則表達式的PHP相當於什麼?
- 2. 什麼是這個PHP正則表達式邊界集的等效JavaScript正則表達式?
- 3. 這個正則表達式做什麼?
- 4. 這個正則表達式做什麼?
- 5. 爲什麼這個正則表達式在Perl中不匹配?
- 6. 這個perl正則表達式有什麼問題?
- 7. 這個Perl正則表達式有什麼作用?
- 8. 爲什麼在perl中這個正則表達式不匹配
- 9. Perl - 爲什麼這個正則表達式匹配?
- 10. 這個Perl正則表達式有什麼問題?
- 11. 這個Perl正則表達式做什麼?
- 12. 爲什麼這不是一個有效的正則表達式?
- 13. 什麼是MySQL的SQL正則表達式這個表達式
- 14. 這個PHP正則表達式模式是什麼意思?
- 15. 爲什麼這個正則表達式無效?
- 16. 這個PHP的正則表達式做什麼?
- 17. php中的這個正則表達式是什麼意思?
- 18. 這個正則表達式的含義是什麼(php)
- 19. 爲什麼這個PHP正則表達式的程序崩潰
- 20. 這個等效的Java正則表達式字符串
- 21. Perl的正則表達式:我如何結合這2個正則表達式?
- 22. 這些Perl正則表達式是什麼意思?
- 23. Python中的等效perl正則表達式
- 24. perl正則表達式無效範圍
- 25. 這個正則表達式在PHP中意味着什麼?
- 26. 爲什麼這個正則表達式在PHP中失敗?
- 27. 這個PHP正則表達式是什麼意思?
- 28. 這個PHP正則表達式有什麼問題?
- 29. 這是什麼正則表達式?
- 30. Lex這是什麼正則表達式
PHP沒有花哨的翻譯如Perl一樣。您可能要使用['preg_replace_callback'](http://php.net/preg_replace_callback)。 –
你爲什麼不發佈你的嘗試,以便人們可以幫助你改進呢? – Ali
這個Perl表達式的Perl相當於什麼?您的搜索列表有56個字符,而您的替換列表有66個。實際上,@ mob,54和64實際上是 – mob