2016-01-29 2 views
0

Как я могу сопоставить это с REGEXP и PHP?preg_match_all в php показ результата пустой

"s:6:\"[\"50\"]\";", 
"s:5:\"[\"1\"]\";" 

Я хочу, чтобы соответствовать номера между: это только [\"50\"] или может быть один или несколько.

У меня есть шаблон и вы хотите принимать только цифры от json_encode значения также serialize() в PHP это код:

$result = []; 
     foreach($impressions as $impression) { 
      preg_match_all('/\x5C/', $impression->subcategories, $result); 
     } 

return $result; 

если нет preg_match то здесь не результат:

"s:6:\"[\"50\"]\";", 
"s:5:\"[\"1\"]\";" 

Я использую это соответствует только цифре, где \ это так, я могу принимать число только как 50 или 1

Любая идея, как я могу подсчитать число с регулярными выражениями? значение hex not works '/ \ x5C /' покажет мне результат пустым, но здесь: Works fine, если я положил результат и проверил с тем же REGEXP.

Screenshot

+0

Вы ничего в вашем шаблоне не _capturing_, так какой результат вы ожидаете? – CBroe

+0

Я хочу захватить только значения: "s: 6: \" [\ "50 \"] \ ";", ---- "s: 5: \" [\ "1 \"] \ ";" 50 или 1 – Earon

+0

Я пробовал это: \ d {1,9} (? = \ X5C) – Earon

ответ

2

Прежде всего, вы не можете пройти через массив строк этак с preg_match_all - ваш $result массив переопределен в каждой итерации цикла.

И тогда вам нужно указать номера, которые вы хотите увидеть в своем результирующем наборе. Чтобы сделать это, необходимо маскировать [, ] и \ символов друг с другом \ - и затем захватить цифры в середине, помещая их в ( и )

$impressions[] = "s:6:\"[\"50\"]\";"; 
$impressions[] = "s:5:\"[\"1\"]\";"; 

foreach($impressions as $impression) { 
    preg_match_all('#\[\\"([0-9]+)\\"\]#', $impression, $matches); // I chose # as delimiter 
    // here – with so many \ involved, we don’t need/around it to add to the confusion 

    $results[] = $matches; // $matches will be overwritten in each iteration, so we 
    // preserve its content here by putting it into the $results array 
} 

var_dump($results); 
Смежные вопросы