2015-01-19 4 views
3

Это мой код:Регулярное выражение показывает ошибку

<?php 

$userinfo = "Scandinavia:\Swiden\Norwaya\Finland\Denmark\Iceland"; 


$userinfo = addslashes($userinfo); 

// preg_match_all ("/(.*\\)/U", $userinfo, $pat_array); 

preg_match_all ("/(.*\)/U", $userinfo, $pat_array); 

print_r($pat_array); 
?> 

Я Тринг, чтобы соответствовать «Скандинавия: \», «Swiden \» ...... Пожалуйста, помогите мне исправить этот код.

ответ

3

Просто используйте \\ перед тем \ Решение:

<?php 
$userinfo = 'Scandinavia:\Swiden\Norwaya\Finland\Denmark\Iceland'; 
$userinfo = addslashes($userinfo); 
preg_match_all ("/(.*\\\)/U", $userinfo, $pat_array); 
print_r($pat_array); 
?> 
0

Используйте ниже регулярное выражение с preg_match_all,

'~[^\\\\]+\\\\~' 

[^\\\\]+ соответствует любому символу, но не обратной косой черты один или несколько раз.

DEMO

$userinfo = "Scandinavia:\Swiden\Norwaya\Finland\Denmark\Iceland"; 
$userinfo = addslashes($userinfo); 
preg_match_all ('~[^\\\\]+\\\\~', $userinfo, $pat_array); 
print_r($pat_array); 

Выход:

Array 
(
    [0] => Array 
     (
      [0] => Scandinavia:\ 
      [1] => Swiden\ 
      [2] => Norwaya\ 
      [3] => Finland\ 
      [4] => Denmark\ 
     ) 

) 
Смежные вопросы