如何在數組中找到如[number]的模式?如何在數組中找到像這樣的特定模式 - > [數字]?
我有類似這樣的數組:
$array = array('1', '2', '3', '{1}', '{2}', '{3}', '[1]', '[2]', '[3]');
如何篩選的陣列和牽住那些具有像[若干]特定圖案字符串?
如何在數組中找到如[number]的模式?如何在數組中找到像這樣的特定模式 - > [數字]?
我有類似這樣的數組:
$array = array('1', '2', '3', '{1}', '{2}', '{3}', '[1]', '[2]', '[3]');
如何篩選的陣列和牽住那些具有像[若干]特定圖案字符串?
可以與array_filter()
陣列過濾,然後遍歷它:
$filtered_array = array_filter($array, function($el) {
return preg_match('/^\[\d+\]$/', $el);
});
這是通過使用一個回調與preg_match()
地發現,由左方括號[
的條目,則有大量數字\d+
,然後右方括號]
。
你可以嘗試is_array()
:
foreach ($array as $num) {
if(is_array($num)) {
echo $num . "<br />";
}
}
這是一個數組? [1] –
@MohammadMasoudian - 不,它不是,尤其是因爲你更新了你的帖子,以表明你的數組中的每個元素都是一個字符串。 – nickb
只需使用preg_grep:
$array = array(1, 2, 3, '{1}', '{2}', '{3}', '[1]', '[2]', '[3]');
$new_array = preg_grep('#^\[\d+(?:.\d+)?\]$#', $array);
$new_array = array_values($new_array); // re-index the array
print_r($new_array); // print the results
解釋的正則表達式:
^
:開始串\[
:匹配[
\d+
:匹配1位或多個(?:.\d+)?
:匹配任選的小數部分\]
:匹配]
$
:字符串的結尾或['preg_filter()'](http:// php。淨/ preg過濾器),如果你不想包括括號。 – salathe
像這樣也許?該正則表達式匹配開頭[
後跟一個數字,然後是結尾]
。
foreach ($array as $num) {
if (preg_match('#\[\d\]#', $num)) {
echo $num;
}
}
如果'$ num'是'「[14]」或'「abc [8] def」'怎麼辦?這與第一個不匹配,會匹配第二個。 – nickb
在問題中沒有指定字符串可能是什麼。我只是使用了給出的例子。 –
有幾種可能性,這裏有兩種可能性。
<?php
$array = array(1, 2, 3, "{1}", "{2}", "{3}", "[1]", "[2]", "[3]");
// Method 1
foreach ($array as $num)
{
if(preg_match("/\[\d+\]/", $num)){
echo $num . "<br />";
}
}
echo "<hr/>"
// Method 2
$filtered=preg_grep("/\[\d+\]/", $array);
foreach ($filtered as $num)
{
echo $num . "<br />";
}
?>
寫你自己的解析函數,你可以使用'typeof','isArray' e.t.c.當你傳遞你自己的模式(如果你談論[數字],{對象},[字符串],[{對象}]) – FSou1
你的意思是匹配字符串或確定值的類型?在你的問題中似乎有一些混淆的註釋。字符串應該適當引用。 –
對不起,我編輯了我的問題 –