сопоставить строку без пробелов с регулярным выражением - PullRequest
0 голосов
/ 21 марта 2019

это моя строка, я хочу получить только "GG-00"

$html = "
<td class="P12"> n                Gg-08n            </td>
<li class="P13"> n                GG-00n            </li>
<li class="P122"> n                Gt-90n            </li>
<img class="m43" src="../a.img"></img>
//and more like that//
"
preg_match('/[A-Z]{2}-[0-9]{2}/', $html, $output);

Я хочу получить только GG-00, который в

<li class="P13">

Ответы [ 4 ]

2 голосов
/ 22 марта 2019

Это должно сделать это (при условии, что это всегда две заглавные буквы с последующим дефисом и двумя числами):

/[A-Z]{2}-[0-9]{2}/
1 голос
/ 22 марта 2019

Все зависит от того, что вы хотите извлечь. Если вы хотите извлечь только этот конкретный «GG-00», вы можете использовать:

$html = '<li class="P12"> n                GG-00n            </li>';
preg_match('/[A-Z]{2}-[0-9]{2}/', $html, $matches);
print_r($matches);

Будет выводить:

Array ( [0] => GG-00 )

Если ваша проблема сложнее, чем этот отдельный случай, вы можете подумать о чтении HTML DOM и получении всех элементов LI

$doc = new DOMDocument();
$doc->loadHTML('<li class="P12"> n                GG-00n            </li>');
$elements = $doc->getElementsByTagName('li');
foreach ($elements as $element) {
    $html = $doc->saveHtml();
    preg_match('/[A-Z]{2}-[0-9]{2}/', $html, $matches);
    print_r($matches);
}
1 голос
/ 21 марта 2019

Это одна из вещей, которые вы можете сделать;

$string = '<li class="P12"> n                GG-00n            </li>';
$string = explode('<li class="P12"> n                ', $string);
$string = explode('            </li>', $string[1]);
$thecode = $string[0];

При этом также могут быть разные коды ...

1 голос
/ 21 марта 2019

Вам необходимо следующее:

/[A-Z].-[0-9]./gm

вот php:

<?php

$matches = null;
preg_match('/[A-Z].-[0-9]./m', '<li class="P12"> n                GG-00n            </li>', $matches);
print_r($matches);

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