preg_match и regex ошибка при разборе строки? - PullRequest
0 голосов
/ 05 ноября 2011

Мне нужно удалить часть URL, используя preg_match, но я так и не получил то, что мне нужно. Вот пример:

$item = "http://example.com/0229883504/?r=2-OR1&p=1";
$item = preg_match_all("/href[^\"]+/i",$item,$matches);
print_r($matches)

Мне нужно вернуть этот номер

0229883504

Я много пробовал, но когда я var_dump массив совпадений, он дает:

Array ( [0] => Array ( [0] => href= ) ) 

Я знаю, что проблема в шаблоне, но я не очень хорош в этой части:)

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Это поможет, например, выше.

 preg_match_all("/http:\/\/example.com\/([a-zA-Z0-9]+)\//",$item,$matches)

или даже лучше:

 preg_match_all("/http:\/\/example.com\/(.+)\//",$item,$matches)

Однако, если ваши домены могут отличаться, используйте пример кода из Aurelio:).

1 голос
/ 05 ноября 2011

Это код, который вам нужен:

$item = "http://example.com/0229883504/?r=2-OR1&p=1";
$item = preg_match_all("#http://.*?/(.*?)/.*#i",$item,$matches);
print_r($matches);

Если вам нужно извлечь значение 0229883504, вы можете добавить следующие строки:

$result = $matches[1][0];
echo $result;

и это будет работать, как вы можете видеть здесь: http://ideone.com/H2E9I

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...