2009-11-20 2 views
0

배열의 문자열 인스턴스를 제거하는 데 str_ireplace()를 사용하고 있습니다. 계산 된 횟수를 반환하지만 실제로 대체를 수행하지는 않습니다.str_ireplace()가 '바늘'을 제거하지 않았습니다

//replace occurances of insert, update, delete, select 
$dmlArray = array('select', 'update', 'delete', 'insert'); 

str_ireplace($dmlArray,'-- replaced DML -- ',$clean['comment'],$Incount); 

여기서 $ clean [ 'comment']은 $ _POST 배열입니다. 예를 들어

, $clean['comment'] = "SELECT, insert, UPDATE, DEleTe";

최종 스트링이어야이 "- - - DML 대체 DML 교체 - - - - DML 교체 - 교체 DML";

아직 아닙니다.

+0

대신 무엇을 얻습니까? – Gumbo

+0

원래 문자열이 나타납니다. 마치 작동하는 것처럼 보이지만 그렇지 않습니다. –

+3

"SQL 문자열 리터럴에 삽입하기 위해 컨텐트를 위생적으로 만들려고 시도하는 것처럼 보입니다. 도와 주시겠습니까? "(\ *) SQL 이스케이프 대신 (\ *) SQL 이스케이프 사용 방법에 대한 도움말을 얻으십시오. 머리를 쾅쾅 거리며 계속하십시오. – bobince

답변

3

기능 str_ireplace은 인수를 변경하지 않습니다. 결과를 리턴합니다. 다음은 코드 수정 방법입니다.

$clean['comment'] = str_ireplace($dmlArray, '-- replaced -- ', $clean['comment'], $Incount); 
+0

나는 간단한 것을 잊어 버리고 있다는 것을 알았습니다. –

1

코드를 실행했는데 예상대로 작동합니다.

echo str_ireplace(
    array('select', 'update', 'delete', 'insert'), 
    '-- replaced DML -- ', 
    'SELECT, insert, UPDATE, DEleTe', 
    $Incount); 

위의 의지 입력 문자열이 참조로 전달되지 않는다는 것을 당신은 대체 값으로 문자열을 얻기 위해 반환 값을 사용할 필요가 있도록

-- replaced DML -- , -- replaced DML -- , -- replaced DML -- , -- replaced DML -- 

그냥, 명심 출력.

관련 문제