2014-03-04 3 views
0

"hello world"를 검색하면 내 "helloworld"로 검색 할 때 내 검색 상자에 공백을 넣을 수 없습니다. 나는 preg_replace을 사용하고 있기 때문에 글자가 아닌 다른 기호 (" '! @ # $ %^& () ~`+ - //)는 공백을 대체하는 이유는 무엇입니까?preg_replace가 내 검색에 공백을 넣을 수 없도록합니다.

코드 :

$search = preg_replace ("#[^0-9a-z]#i","",$search); 
+0

대체품은 0-9, a-z가 아닌 모든 것을 제거합니다. –

+1

스페이스도 문자입니다. 그리고 그것은 a-z도 아니고 0-9 사이도 아니며, 그것이 왜 벗겨지고 있는지에 대해 교육받은 추측을 할 수 있습니까? –

답변

1

좋아는

[^0-9a-z] 

이 ^위한 정규 표현식의 모양이기 때문에 내가 당신을 위해 그것을 무너 뜨리는하자 - "정규 표현식의 부정 (정확히 아니라, 뜻을 의미한다. 모든 것을 제외하고 ... "), 그리고 그것은 지혜로 뒤 따른다. h 두 범위 : 0-9 및 a-z. 즉, 두 개의 정확한 세트가 아닌 문자는이 표현에 의해 포착됩니다. 여기에는 아랍어 문자, 특수 문자 및 공백이 포함됩니다. 당신이 그것을 원하는대로 작동하게하기 위해, 당신은 표현에 공간을 추가해야합니다 :

[^0-9a-z ] 

당신은 정규 표현식은 문자 그대로 있다는 사실을 계속해야하고는 거의 여유를 제공합니다.

관련 문제