2013-07-11 47 views
1

到目前爲止,我設法分離,並通過這樣算圖片中的字符串:PHP的正則表達式:隔離和計數OCCURENCES

preg_match_all('#<img([^<]+)>#', $string, $temp_img); 
$count=count($temp_img[1]); 

我願做類似與部件的東西,應該是這樣的:

「code = mYrAnd0mc0dE123」。

舉例來說,假設我有這個字符串:

$string="my first code is code=aZeRtY and my second one is code=qSdF1E" 

我想「AZERTY」和「qSdF1E」存儲在數組中。

我嘗試了一堆正則表達式來隔離「代碼= ...」但沒有人爲我工作。 很明顯,正則表達式超越了我。

謝謝。

+2

能否請您解釋一下你的意思是由 *我希望做的部分,將是這樣的「代碼= mYrAnd0mc0dE123」類似的東西* – edi9999

+0

當然。我的意思是檢測「碼= ABCD」的每一次出現出現在字符串中(其中aBcD可以是任何字母數字),並將值存儲在變量中,例如「$ temp_code [1]」。就像我對圖像做的一樣。我相應地編輯了這個問題。 – Baylock

回答

4

您是否正在尋找?

preg_match_all('#code=([A-Za-z0-9]+)#', $string, $results); 
$count = count($results[1]); 
+0

足夠簡單,我期待着一些技巧。非常感謝你。 – Baylock

1

此:

$string = ' 
    code=jhb2345jhbv2345ljhb2435 
    code=jhb2345jhbv2345ljhb2435 
    code=jhb2345jhbv2345ljhb2435 
    code=jhb2345jhbv2345ljhb2435 
    '; 

preg_match_all('/(?<=code=)[a-zA-Z0-9]+/', $string, $matches); 

echo('<pre>'); 
print_r($matches); 
echo('</pre>'); 

輸出:code=jhb2345jhbv2345ljhb2435code=jhb2345jhbv2345ljhb2435

Array 
(
    [0] => Array 
     (
      [0] => jhb2345jhbv2345ljhb2435 
      [1] => jhb2345jhbv2345ljhb2435 
      [2] => jhb2345jhbv2345ljhb2435 
      [3] => jhb2345jhbv2345ljhb2435 
     ) 
) 

但是沒有後面添加分隔符,將無法正常,如果這種模式是連鎖,如工作但也許這對你來說不會有問題。

+0

不,這不應該是一個問題,因爲代碼之間會有空格。我的觀點是允許用戶在其帖子中簡單添加諸如「youtube = AzErTy24」之類的內容,以相應地自動實例化和格式化播放器。唯一的風險是最後有任何標點符號,但由於YouTube不在其ID中使用標點符號,所以很容易檢測並刪除它們(如果有的話)。 – Baylock