2015-05-07 54 views
1

得到所有[]之間的字符我有一個​​字符串如何使用PHP Pregmatch

$str = "[xyz.hlp] into asasa jkljk [xyp.htq] zff [xrt.thg]"; 

我想從字符串中的字符,使所有這些字符數組。例如用於上面的字符串提供予shuould得到和數組這樣

$array("xyz.hlp","xyp.htq","xrt.thg"); 

我使用的preg_match嘗試();這樣的事情,但它並沒有在前期工作

preg_match('/\[(.*)\]/', $str , $Fdesc); 

感謝

+1

定義「不起作用」。你得到了什麼?你可能想要'(。*?)',所以它不會貪婪,但總是解釋在提問時它是如何工作的。 –

+0

上面的解決方案只是匹配第一個。但是我想創建一個'[]'中的每個字符串的數組。 – Vikram

+1

你可能會在這裏找到解決方案http://stackoverflow.com/questions/24510759/capturing-text-between-square-brackets-after-a-substring-in-php –

回答

1

你應該使用試試這個

$str = "[xyz.hlp] into asasa jkljk [xyp.htq] zff [xrt.thg]"; 

preg_match_all('/\[(.*?)\]/', $str , $Fdesc); 

print_r($Fdesc[1]); 

基於由@sameerK

+0

謝謝你的回答,因爲沒有人把這個答案作爲答案,我會接受你的。 – Vikram

0

提供的鏈接,我得到了上期望的輸出,但通過使用循環和一些PHP字符串函數

<?php 
$str = "[xyz.hlp] into asasa jkljk [xyp.htq] zff [xrt.thg]"; 
$i = 0; 
while ($i != strrpos($str, "]")) { 
    $f_pos = strpos($str, "[", $i); // for first position 
    $l_pos = strpos($str, "]", $f_pos + 1); // for the last position 
    $value = substr($str, $f_pos, ($l_pos - $f_pos) + 1); 
    echo $value; 
    $i = $l_pos; 
} 
?>