2012-03-04 3 views
1

I이 줄을 함께대안 ... "E"개질제

preg_replace('/([^\x20-\x7e])/e', '"\\\\\\x" . dechex(ord("${1}"))', $string); 

를 preg_replace이다한다 .. 그리고 그것은/E 개질제 preg_replace이다 사용()에 대한 경고를 생성한다.

이 정규 표현식을 대체하는 방법에 대한 몇 가지 팁을 찾고 있습니다.

"preg_replace_callback"을 대안으로 사용할 수 있지만 실제로 구현하는 데 도움이 필요하다는 것을 모았습니다.

나는 여전히 PHP manual을 읽었지만 여전히 고민 중입니다. 제 질문은 원래의 preg_replace_callback과 관련된 것입니다.

유효합니까?

function myCallback($matches) { 
    return '"\\\\\\x" . dechex(ord($matches[1]))'; 
} 
preg_replace_callback('/([^\x20-\x7e])/', 'myCallback', $string); 
+0

*이 유효한가 *는 것 같은데하지만 될 것 같지 않습니다 당신이 원하는. 함수 호출은 여전히 ​​문자열 안에 있습니다. 그냥 주변의 작은 따옴표를 제거하십시오. 그렇지 않으면 문자열을 문자 그대로 반환합니다. –

답변

2

당신은 코드를 반환하지 않는, 당신은 당신과 같이, 교체 할 실제 값을 반환 :

function myCallback($matches) { 
    return "\\\\\\x" . dechex(ord($matches[1])); 
}