Что такое регулярное выражение для решения этой проблемы? - PullRequest
2 голосов
/ 17 июня 2010

У меня есть массив в PHP с URL-адресами, как показано ниже:

http://example.com/apps/1235554/
http://example.com/apps/apple/
http://example.com/apps/126734
http://example.com/images/a.jpg
http://example.com/images/b.jpg
http://example.com/apps/2331234/
http://example.com/apps/orange/

Как можно выделить эти URL-адреса и передать их в другой массив с помощью регулярных выражений:

http://example.com/apps/1235554/
http://example.com/apps/126734
http://example.com/apps/2331234/

Должен быть выбран только URL с apps/{number}/ и apps/{number}.

Ответы [ 5 ]

4 голосов
/ 17 июня 2010

Предполагая, что вы не используете "/" в качестве символа разделителя регулярных выражений для игнорирования экранирующих проблем, это поможет:

   "^http://example.com/apps/\d+/?$"
1 голос
/ 17 июня 2010
foreach ($urls as $url)
{
    if (preg_match('~apps/[0-9]~', $url)) echo $url;
}

или более ограничительных:

~apps/[0-9]+(/|$)~

, чтобы соответствовать косой черте или концу строки.

0 голосов
/ 17 июня 2010

Если вы хотите сохранить только URL-адреса с / app / (несколько цифр) и, возможно, заканчиваться слешами, вы можете использовать цикл, подобный следующему:

for ($i = count($urls); $i-->0 ;) {
    if (!preg_match('-/apps/\d+/?$-', $urls[$i])) unset($urls[$i]);
}   

Он очищает ваш массив на месте,без необходимости использовать временный.Я предполагаю, что имя хоста не является константой, в противном случае вы можете изменить регулярное выражение с помощью:

'-^http://www.example.com/apps/\d+/?$-'

Я заменил стандартный разделитель регулярных выражений /, чтобы мне не пришлось избегать косых чертURL.

0 голосов
/ 17 июня 2010

Вы также можете сделать это, используя отрицательный взгляд, чтобы заменить все строки, которые вам не нужны, пустой строкой:

Заменить

http://example\.com/(?!apps/[0-9]+).*

С

''
0 голосов
/ 17 июня 2010

^http://example\.com/apps/\d+\b - apps затем косая черта, затем несколько цифр и затем граница слова, т.е. не алфавитный символ.

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