2012-11-04 4 views
-3

필자는 입력에서 글자와 심볼 "-"까지 모든 것을 필 터링하는 함수를 작성하려고합니다.글자와 "-"이외의 모든 것을 필터링하십시오.

if(!preg_match('/^\[a-zA-Z]+$/',$string)) { 
// Containing something other than a-z and A-Z 
} 

$string = 'Jean-Paul'; 지금 문자열이 잘못된 문자가 포함되어 있습니다,하지만 어떻게 내가 그래서 그 수행 할 수 있습니다 입력이 이름을 포함하고있는 사람은 장 폴 호출 할 수 있기 때문에 내가 그 기호를 원하는이 내 현재 코드입니다 "-"을 (를) 허용합니까? 그것이 첫 번째 또는 마지막 문자가 있는지

+1

아무것도를 사용하는 경우 죄송합니다 – Alexander

+0

를 해결하지 않았을 알렉산더 – DannyCruzeira

+0

당신이 현명하다고 생각해서 미안합니다. – Alexander

답변

1

원치 않는 문자를 삭제 의미"필터"에 의해, 다음

$s = preg_replace("/[^a-z-]/i", "", $s); 

또는 약 2 분 정규 표현식에 대한 책을 읽은

$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s)); 
3
if (!preg_match('/^[A-Z-]+$/i', $string)) { 
// Contains something other than A-Z (case-insensitive) or - 
} 

-는 문자 클래스 내부의 문자 대시로 처리됩니다.

"Jean-Rémy"은 계속 실패합니다. 자신을 ASCII 문자로 제한 하시겠습니까?

+0

'$ string = iconv ('UTF-8', 'ASCII // TRANSLIT // IGNORE', $ string);와 같은 것을 추가하지 않으면 실패를 피할 수 있습니다. – nickhar

관련 문제