用数字字符串中的ASCII值替换char

时间:2012-09-27 16:48:57

标签: php regex

嗨我有以下由字母和数字“00G990010020100038”组成的字符串,我想用它们的ASCII值替换字母,实际上字符串里面只能有一个字母,位置是它的变化。

我尝试使用preg_replace但没有成功,也许我做错了。

preg_replace("/[a-zA-Z]/", ord('$\1'), $mystring)

我的代码用字母“$”替换字母的ASCII值,但我想要替换“G”(在这种情况下)。

2 个答案:

答案 0 :(得分:2)

试试这个:

preg_replace("/[a-zA-Z]/e", "ord('\\0')", $mystring)

/ e修饰符允许您在替换中执行PHP。

答案 1 :(得分:2)

您可以使用preg_replace_callback代替。 It's more efficient than the e modifier.

preg_replace_callback(
    "/[a-zA-Z]/",
    create_function('$matches','return ord($matches[0]);'),
    $mystring
);