PHP preg_match () - регулярное выражение для расплывчатых? - PullRequest
1 голос
/ 27 марта 2012

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

По сути, я создал простой класс, который возвращает текст между пользовательскими тегами.

function getData($tagname){
    $this->tagname = $tagname;
    $string = $this->dump;
    $pattern = "/<$tagname>(.*?)<\/$tagname>/s";
    preg_match($pattern,$string,$matches,PREG_OFFSET_CAPTURE);
    print_r($matches);
}

Это дает мне требуемую информацию, но возвращает несколько копий в массиве, мне просто интересно, в чем причина этого?

Например,

$depData->getData('departureTime');

Возвращает

Array ( [0] => Array ( [0] => 2012/03/07 12:45:13 [1] => 41 ) [1] => Array ( [0] => 2012/03/07 12:45:13 [1] => 56 ) ) 

Я думаю, что это как-то связано с тем, что мое регулярное выражение расплывчато?

1 Ответ

1 голос
/ 27 марта 2012

Это дает вам 2 результата: сначала для целого выражения <tag>(.*?)</tag>, а второй результат для результата в скобках (.*?)

Также я создал для вас пример, чтобы увидеть разницу между первым захватом (целое выражение) и захватом в скобках (ваш поиск).

http://xrg.es/#1ompqhf

Примечание: я заменил <и > с ", чтобы вы могли более четко увидеть, в чем дело.

...