PHP: пожалуйста, помогите с использованием preg_match - PullRequest
0 голосов
/ 04 ноября 2011

Пример: Found: 84 Displaying: 1 - 84

Я хочу получить число 84 между Found и Displaying с помощью preg_match, но я очень плох в регулярном выражении.

Знаете ли вы, какой хороший урок для изучения регулярных выражений? Я не могу найти хороший в Google.

Редактировать вставлено из комментариев ниже :

Я просто упростил мою проблему здесь. Настоящая проблема в том, что я найду его на полной HTML-странице, такой как поиск в Google. Вы понимаете, что я имею в виду, верно?

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Если ваши входные данные всегда будут в одном и том же формате, нет необходимости использовать регулярные выражения.Вместо этого просто разбейте строку на пробелы:

// explode() on spaces, returning at most 2 array elements.
$parts = explode(" ", "Found: 84 Displaying: 1 - 84", 2);
echo $parts[1];

Обновление Если вы действительно действительно хотите использовать preg_match() для этого, вот как.Это не рекомендуется для такого простого приложения.

// Array will hold matched results
$matches = array();

$input = "Found: 84 Displaying: 1 - 84";

// Your regex will match the pattern ([0-9]+) (one or more digits, between Found and Displaying
$result = preg_match("/^Found: ([0-9]+) Displaying/", $input, $matches);

// See what's inside your $matches array
print_r($matches);

// The number you want should be in $matches[1], the first subgroup captured
echo $matches[1];
1 голос
/ 04 ноября 2011

Довольно простое регулярное выражение, я включил код PHP, который его использует:

<?php
preg_match("/(\d+)/", "Found: 84 Displaying: 1 - 84", $matches);
//$matches[0] should have the first number, i.e. 84
echo $matches[0]; // outputs "84"
?>

http://www.regular -expressions.info / содержит довольно хорошую информацию о том, как писать регулярные выражения.

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

...