2011-06-14 5 views
6

나는이 코드를 시도하고와 쉼표 (,)를 교체하지만 난이 오류가 (.) : No ending delimiter '/' found점 정규식 PHP

$form = " 2000,50"; 
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found 
echo $salary; 

내가 정규식 유효성 검사에 대해 확실하지 않다.

+4

왜 이것을 정규식이 필요합니까? – BoltClock

답변

52

정규 표현식은 단일 문자를 대체하기에는 과잉입니다. 왜 그냥 대신이 작업을 수행해야합니까?

str_replace(',', '.', $form); 
+2

사실. 왜 스크류 드라이버로 충분할 때 12,000 개의 첨부 파일이있는 파워 드릴을 사용해야합니까? –

+1

@Midas : 기본 응답의 경우 너무 많은 양의 상향 신호를받는 경향이있는 것으로 보입니다. http://stackoverflow.com/questions/4080265/what-does-this-css-do/4080268#4080268 내 대답 중 대부분은 예제입니다. – BoltClock

+0

이 경우 str_replace()는 preg_replace()보다 4 배 이상 빠른 속도를 수행하므로 str_replace()가 가장 좋습니다. –

3

당신은 단순히

str_replace(',','.',$form); 
5
$salary = preg_replace('/,/', '.', $form); 

를 사용할 수 있지만 그래, 당신은 정말 그렇게 간단 str_replace()을 사용합니다 패턴하지만 일정하는 문자열과 일치하지 않습니다.

0

문자열의 '/'는 정규식 시작 구분 기호로 사용되므로 이스케이프 처리해야합니다. 올바른 줄을 읽어야합니다 :

$salary = preg_replace('\\/',', '.'/', $form); 

두 번째 매개 변수가 ','인지 궁금합니다. '/'보다는 '/'. 지금 볼

편집

아는 선 읽어야합니다

$salary = preg_replace('/,/', '.', $form); 

귀하의 예제에서 첫 번째 쉼표가해야하기 때문에이 혼란스러워했다 '.' 문자열을 연결합니다.

1

매개 변수를 이해할 수 없습니다. 문자열에 무엇이 있어야하고 어떤 문자열이 아닌지 잘 모르겠습니다. 하지만 preg_replace의 경우 검색 패턴은 문자열이어야하며 문자열은 구분 기호 (일반적으로 '/')로 시작하고 끝나야합니다. 나는 이미 문자열 안에있을 때 검색 문자열 둘레에 슬래시가 필요하다는 것을 생각하지 않는다. 그러나 그것이 작동하는 방법이다.

두 번째 매개 변수는 전체 중지가 포함 된 문자열이어야하며 그 밖의 것은 없습니다. 다음과 같이 표시됩니다.

$ salary = preg_replace ('/, /', '.', $ form);

str_replace는 한 문자를 다른 문자로 변환하는 데는 문제가 없지만 원하는 문자를 바꾸면 더 복잡한 preg_replace가됩니다.