2014-02-08 3 views
0

함수의 일부로 함수를 전달하기 위해이를 읽고 url 및 구문 분석하려고합니다. 문자열에 일종의 자리 표시자를 만드는 방법이 있습니까? 그렇게 할 수있는 방법이문자열의 동적 조각을 변수에 할당하십시오.

switch ('localhost/documents/') { 

    case 'img/{imageId}': 
    $image = $controller->showDocumentImage($imageId); 
    break; 
} 

있습니까 :

코드인가? "img /"문자열 다음에있는 숫자를 함수에 전달하려면 어떻게해야합니까? 그것은 편안한 시뮬레이션과 같아야합니다.

+0

switch ('localhost/documents /')를 왜 사용합니까? 나는이 코드가 아무 것도하지 않는다. –

+0

@kasperTaeymans'$ _SERVER [ 'REQUEST_URI']'를 분석하고이를 다른 하위 문자열 수준으로 분할하는 프런트 컨트롤러를 만들었습니다. 이 스위치는 URL을 기반으로 다른 컨트롤러를 인스턴스화하는 데 사용됩니다. 예 :'localhost/appname/documents/requestedMethod'는 DocumentsController를 인스턴스화하고'requestedMethod()'함수를 시작합니다. –

답변

0

귀하의 switch 성명은 그다지 의미가 없습니다.

당신은 img 후 번호를 추출하는 regular expression를 사용할 수 있습니다

if (preg_match('#img/(?P<imageId>\d+)#', 'img/123', $matches)) { 
    // $matches['imageId'] == "123" 
    $controller->showDocumentImage($matches['imageId']); 
} 

(가) 실제로 당신이 당신의 필요에 따라 다를 수 있습니다 사용 정규식.

+0

정규 표현식과이 표현식의 차이점은 무엇입니까?'(? <= img /).*(?=/)'? 나는 정규식에 익숙하지 않다. –

+0

그룹 (괄호로 둘러싸인 비트)은 긍정적 인 표정과 뒤집기 어설 션입니다. 내 regex는 말합니다 :'img /'뒤에 임의의 숫자를 매치하십시오. Yours says :'.g'와''.'가 뒤 따르는 것들 ('. *')과 일치하십시오. – chrisguitarguy

+0

이것이 좋을 것 같니? '? P '부분을 제대로 사용하고 있는지 알 수 없습니다. (? <= img /) (? P \ d +) (? = /) –

관련 문제