배열에 허용 된 문자를 정의하려고 시도하고이 배열을 기반으로 문자열을 삭제합니다. 아래의 코드는 0-9의 문자도 제거한다는 점을 제외하면 꽤 잘 작동합니다!PHP - Sanitize 문자열이 숫자를 제거합니다
누군가 이유를 설명해주세요.
코드 :
<?php
//Allowed characters within user data:
$symbols = array();
$symbols += range('a', 'z');
$symbols += range('A', 'Z');
$symbols += range('0', '9');
array_push($symbols,' ','-'); // Allow spaces and hyphens.
//----test 1
//data to test.
$someString = "07mm04dd1776yyyy";
//sanatize
$someString = trim(preg_replace("/[^" . preg_quote(implode('',$symbols), '/') . "]/i", "", $someString));
echo "$someString\n";
//----test 2
$someString = "Another-07/04/[email protected]#$%^&*()[]\\;',./\"[]|;\"<>?";
//sanatize
$someString = trim(preg_replace("/[^" . preg_quote(implode('',$symbols), '/') . "]/i", "", $someString));
echo "$someString\n";
?>
출력 :
mmddyyyy
Another--test-
(!) 참고 (편집) :이 데이터베이스와 함께 사용되지만이 DB 넘어의 DB에있는 데이터에 사용됩니다 사용자를 Active Directory로 가져 오는 powershell 스크립트를 작성하고 많은 문자를 사용할 수 없으며 이전 시스템에서도이 문자 만 허용했습니다.
가 @andrewsi 배열에 추가되지 허용 된 문자와 말의 떨어져가는 사전에 웨인
(!) 참고 :이 혹시 데이터베이스와 아무 상관이 있나요? 그렇다면 모든 것이 필요하지 않습니다. 준비된 진술을 사용할 수 있습니다. –
DB를 넘어서지만 DB의 데이터는 사용자를 Active Directory로 가져 오는 PowerShell 스크립트를 작성하는 데 사용되며 많은 문자는 허용되지 않으며 이전 시스템에서도 이러한 문자 만 허용됩니다. –
확인. 괜찮 으면 질문에 의견을 추가했습니다. 가능한 답의 결과와 관련이있을 수 있습니다. –