Новые книги

Master Android from first principles and begin the journey toward your own successful Android applications!

Dear Reader,

First, welcome to the world of Android! We’re entering a new era of mobile application development, one marked by open platforms and open source, to take ‘walled gardens’ and make them green houses for any and all to participate in. Android is relatively easy for developers, and I believe that this innovation will help generate a large ecosystem of developers and consumers within a very short time. This means that budding developers such as yourself will have many opportunities to design and build your own applications and you’ll have a huge and hungry customer base.

Second, welcome to the book! Its purpose is to start you on your way with building Android applications, and to help you master the learning curve. Android is already a rich framework, comparable in many ways to the richness Android of desktop Java environments. This means that there is a lot of cool stuff for you to pick up along your journey in order to create the slickest, most useful apps Android you can imagine.

The source code for the code samples in this book is all available from the Apress site, so you can stay as hands-on and practical as you like while I introduce you to the core of Android, and invite you to experiment with the various classes and APIs we’ll be looking at. By the time you’ve finished this book, you’ll be creating your own Android applications and asking yourself what your next great application will be…!

Enjoy!

Mark Murphy
Алекса Клэй и Кира Майя Филипс исследуют ту часть экономики, которая обычно остается за кадром, экономику хайпа – успешную модель мышления, которая способствует инновациям и предпринимательству в пределах корпоративных структур.

В центре внимания исследования – те, кто нарушает правила, чтобы найти оригинальное решение бизнес-проблемы. Это, к примеру, жители трущоб Бомбея или компьютерные хакеры. Авторы выбрали пять общих черт, присущих этим группам: энергичность, ловкость, склонность к провокации, решительность и мимикрия (умение подражать, маскироваться). Узнайте, как зарабатывать на хайпе, став немного out law.

preg_match_all

Учебник РНР
НазадВперёд

preg_match_all

(PHP 3>= 3.0.9, PHP 4)

preg_match_all - выполняет глобальный поиск совпадения регулярного выражения.

Описание

int preg_match_all (string pattern, string subject, array matches [, int flags])

Ищет в subject все совпадения с регулярным выражением pattern и помещает их в matches в порядке, специфицированном в order.

После нахождения первого совпадения последующий поиск продолжается до нахождения последнего совпадения.

flags может быть комбинацией следующих флагов (обратите внимание, что нет смысла использовать PREG_PATTERN_ORDER вместе с PREG_SET_ORDER):

PREG_PATTERN_ORDER

Упорядочивает результаты таким образом, что $matches[0] это массив полных совпадений с патэрном, $matches[1] это массив строк, совпавших с первым субпатэрном в скобках, и так далее.

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", 
    "<b>example: </b><div align=left>this is a test</div>", 
    $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";

Этот пример выдаст:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

Итак, $out[0] содержит массив строк, совпавших со всем патэрном, а $out[1] содержит массив строк, заключённых в тэги.

PREG_SET_ORDER

Упорядочивает результаты таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и так далее.

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", 
    "<b>example: </b><div align=left>this is a test</div>", 
    $out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";

Этот пример выдаст:

<b>example: </b>, example: 
<div align=left>this is a test</div>, this is a test

В данном случае $matches[0] это первый набор совпадений, а $matches[0][0] содержит текст, совпавший с полным патэрном, $matches[0][1] содержит текст, совпавший с первым субпатэрном, и так далее. Аналогично $matches[1] это второй набор совпадений, etc.

PREG_OFFSET_CAPTURE

Если этот флаг установлен, для каждого возникшего совпадения будет возвращено дополнительное строковое смещение. Заметьте, что это изменяет return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки в смещении 0 и её строкового смещения в subject - в смещении 1. Этот флаг доступен, начиная с PHP 4.3.0.

Если никакой флаг упорядочивания не задан, принимается PREG_PATTERN_ORDER.

Возвращает количество полных совпадений с патэрном (это может быть нуль), или FALSE при ошибке.

Пример 1. Получение всех телефонных номеров из текста.
preg_match_all ("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
                "Call 555-1212 or 1-800-555-1212", $phones);
Пример 2. Поиск совпадений с HTML-тэгами (greedy/жадный)
// \\2 это пример обратной ссылки/backreferencing. Это говорит pcre, что
// она обязана совпасть со вторым набором скобок в регулярном выражении,
// что будет в данном случае ([\w]+). Дополнительный backslash необходим,
// поскольку строка в двойных кавычках.
$html = "<b>bold text</b><a href=howdy.html>click me</a>;

preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
  echo "matched: ".$matches[0][$i]."\n";
  echo "part 1: ".$matches[1][$i]."\n";
  echo "part 2: ".$matches[3][$i]."\n";
  echo "part 3: ".$matches[4][$i]."\n\n";
}

Этот пример выдаст:

matched: <b>bold text</b>
part 1: <b>
part 2: bold text
part 3: </b>

matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: click me
part 3: </a>

См. также preg_match(), preg_replace() и preg_split().


Назад Оглавление Вперёд
preg_grep Вверхpreg_match