2014-02-08 147 views
0

我想讀取並解析它,並將它的一部分作爲參數傳遞給一個函數。 有沒有辦法在字符串中創建一種佔位符?將一個字符串的一個動態片段分配給一個變量

這是代碼:

switch ('localhost/documents/') { 

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

有沒有辦法做到這一點?如何在「img /」字符串後面輸入數字並將其傳遞給函數?它應該像一個寧靜的模擬。

+0

你爲什麼要切換('localhost/documents /')?我不明白...這段代碼什麼都不做。 –

+0

@kasperTaeymans我創建了一個前端控制器,用於解析$ _SERVER ['REQUEST_URI']並將其分割爲不同的子字符串級別。該開關用於基於url實例化不同的控制器。例如:'localhost/appname/documents/requestedMethod'實例化DocumentsController並啓動'requestedMethod()'函數。 –

回答

0

您的switch聲明,在那裏沒有很多意義。

您可以使用regular expressionimg後提取數:

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

的實際正則表達式,您使用可能會有所不同,這取決於你的需求。

+0

你的正則表達式和這個之間有什麼區別:'(?<= img /).*(?=/)'?我不習慣正則表達式。 –

+0

這些組(括號包圍的比特)是積極的後面和前面的斷言。我的正則表達式:匹配'img /'後跟任意數字的數字。你的說法:匹配以'img /'開頭,後面跟着'/'的任何東西('。*')。 – chrisguitarguy

+0

你認爲這會很好嗎? '(?<= img /)(?P \ d +)(?= /)'我不知道我是否正確使用了'?P '部分。 –

相關問題