2014-12-04 4 views
2

어떤 이유에서이 코드는 숫자를 걸러 내고, 누군가가 나를 도울 수 있다면, 그 이유가 무엇인지 전혀 모른다.preg_replace() 함수를 사용하여 숫자 필터링을 중지하는 방법은 무엇입니까?

function makeFriendly($string){ 
    $string = strtolower(trim($string)); 
    $string = str_replace("'", '', $string); 
    $string = preg_replace('#[^a-z\-]+#', '_', $string); 
    $string = preg_replace('#_{2,}#', '_', $string); 
    $string = preg_replace('#_-_#', '-', $string); 
    return preg_replace('#(^_+|_+$)#D', '', $string); 
} 

내가 지금 할 경우

echo makeFriendly('123asd'); 

그것은 단지 쇼 'ASD를'.

답변

0

$string = preg_replace('#[^a-z\-]+#', '_', $string);의 의미 : 'a-z 범위의 문자 또는'하이픈 '을'비 핵심 '으로 바꾸지 말 것'을 의미합니다.

$string = preg_replace('#[^0-9a-z\-]+#', '', $string); 
+0

고마워, 지금 일하는 것 같습니다. – Tom

+0

그 대답을 듣고 기뻐요 : 내 대답은 당신을 도왔다면 대답으로 표시하시기 바랍니다 : D – Forien

+0

그래도,하지만 내 문제가 발견, 어떤 이유로 내 index.php 페이지에서 작동하지만, 내가 function.php 파일을 다른 문서 (다른 맵에서)에 포함 시키면 더 이상 작동하지 않으며 모든 숫자와 물건을 대체합니다. 나는 그것을 올바르게 포함 시켰습니다. – Tom

3

왜 안 되나요?

$string = preg_replace('#[^a-z\-]+#', '_', $string); 
          ^--- NOT 
          ^^^-- a,b,c,....,z 
           ^--- dash 

기본적으로 "a-z 또는 대시가 아닌 것은 밑줄로 바꿉니다".

+0

감사를 제거해야하지만, 지금은 하나의 공간을 필터링하지 않습니다 그리고 그것은 다른 모든 것들 외에 할 필요가 무엇 :

이 시도. – Tom

-1

당신은 $string = preg_replace('#[^a-z\-]+#', '_', $string);

관련 문제