2016-03-15 70 views
1

我有一個php變量,看起來像這樣q1q32q1qq2q14q2qq3q16q3q。這個變量的邏輯是,一個條目以q1q開頭,以q1q結尾,在這兩個條目之間有一個數字,在這個例子中是32個。我想要寫的代碼找到中間的數字,你知道q1q。這就是我開始寫在php變量的兩個條目之間查找條目

strpos($participants, "q" . $_SESSION["UserID"] . "q") 

在根據上述示例$ _SESSION [「用戶ID」]等於1和$參與者是包含可變q1q32q1qq2q14q2qq3q16q3q。關於如何完成我的代碼的任何想法?

+1

'$ arr = explode(「q1q」, 「q1q32q1qq2q14q2qq3q16q3q」);'//結果將存放在'$ arr [1]'中,而'$ arr [2]'將成爲字符串「q2q14q2qq3q16q3q」的其餘部分? – pes502

+0

@ pes502數組元素[0]發生了什麼? – Naruto

+0

@Naruto它的空,因爲在開始字符串'q1q'之前沒有任何其他字符 – pes502

回答

0

嘗試preg_match

$str = 'q1q32q1qq2q14q2qq3q16q3q'; 
$word1 = 'q1q'; 
$word2 = 'q1q'; 
preg_match('/'.preg_quote($word1).'(.*?)'.preg_quote($word2).'/is', $str, $match); 

print_r($match); //$match[1] will have desired output 

輸出:

Array 
(
    [0] => q1q32q1q 
    [1] => 32 
) 

你可以strpossubstr嘗試,但它非常冗長 見下面的例子:

echo substr($str, (strpos($str, $word1) + strlen($word1)), (strpos($str, $word2, 1) - strlen($word2))); //output: 32 
0

你需要緩衝區讀取php文件並添加條件,如果在文件中找到字符串變量,然後根據需要操作它 我不認爲是任何其他方式