2016-12-17 4 views
0

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

html Я хочу, чтобы поиск выглядел как ">2</td>, и я хочу использовать подстановочный знак в бите числа.

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


Моя проба выглядит следующим образом:

if (preg_match('/>(\w+)</td>/', $content, $matches)) { 
    echo $matches[1]; 
} 

Как я могу добавить ограничение на количество символов от 1 до регулярного выражения, поэтому я долго искать только до 3-х символов и только форма целого числа для шаблона?


Или есть лучший способ, кроме регулярного выражения; для поиска этих строк html и помещать их внутри массива?

+0

Я хочу найти 2 цифр, а на самом деле – senty

+3

Вы знаете, есть DOM и XPath для поиска в HTML-документы, не так ли? – Gordon

+0

Я пытаюсь получить информацию с другого сайта. Я использовал file_get_contents. Могу ли я использовать свой путь? Как вы думаете, лучший способ добиться того, чего я хочу. Число 1-200, и я пытаюсь найти html, чтобы найти каждый. Но классы структурированы странно, поэтому мне нужно искать этот путь (я думаю) – senty

ответ

1

Вам нужно два изменения: две вещи. Замените \w на \d, чтобы использовать только цифры вместо каждого символа слова. Во-вторых, замените + на {1,3}. Последнее говорит, что требуется до трех цифр. Ваше полное заявление будет тогда:

if (preg_match('/>(\d{1,3})</td>/', $content, $matches)) { 
    echo $matches[1]; 
} 
+0

Я заработал, и он работает $ matches [1], но он не возвращает $ matches [2] или [3]:/что может быть проблемой? – senty

+0

Из руководства: Если указаны соответствия, то они заполняются результатами поиска. $ match [0] будет содержать текст, который соответствует полному шаблону, $ matches [1] будет иметь текст, который соответствует первому захваченному подшаблону в скобках и т. д. –

+1

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

 Смежные вопросы

  • Нет связанных вопросов^_^