Pegas
Новичок
Регулярные выражения
Помогите написать регулярки. Есть HTML-страница
<html>
...мета-теги...
<body какие-то параметры>
...html-код...
<noindex>
...html-код...
coding0123
...html-код...
<noindex>
...html-код...
</body>
</html>
Задача: если "coding0123" заключен в тег <body> и не заключен в тег <noindex> выражение выполняется и результатом будет число "0123"
мои попытки написать регулярку привели к следующим результатам:
если "coding0123" заключен в тег <body> выражение выполняется и результатом будет число "0123"
с тегом <noindex> получается такое:
если перед "coding0123" нет <noindex>, тогда выражение выполняется и результатом будет число "0123", но работет только, когда <noindex>coding0123 - на одной строке, переходы на новую строку не понимает.
как вариант проверять так:
результатом явилось написание такой функции:
поможите решить задачку правильно и лучше....
-~{}~ 22.10.06 03:29:
неужели мое решение единственно правильное?
Помогите написать регулярки. Есть HTML-страница
<html>
...мета-теги...
<body какие-то параметры>
...html-код...
<noindex>
...html-код...
coding0123
...html-код...
<noindex>
...html-код...
</body>
</html>
Задача: если "coding0123" заключен в тег <body> и не заключен в тег <noindex> выражение выполняется и результатом будет число "0123"
мои попытки написать регулярку привели к следующим результатам:
PHP:
$line=file_get_contents("index1.php");
preg_match("/<body(.*)>(.*)coding([0-9]*)(.*)<\/body>/is", $line, $matches);
с тегом <noindex> получается такое:
PHP:
$line=file_get_contents("index1.php");
preg_match("/(?<!\<noindex\>)coding([0-9]*)/is", $line, $matches);
как вариант проверять так:
PHP:
preg_match("/<noindex>(.*)coding([0-9]*)(.*)<\/noindex>/is", $line, $matches);
PHP:
function check_coding1($url)
{
$line=file_get_contents("$url");
preg_match("/<noindex>(.*)<!--coding([0-9]*)-->(.*)<\/noindex>/is", $line, $matches);
if (!isset($matches[0]))
preg_match("/<body(.*)>(.*)<!--coding([0-9]*)-->(.*)<\/body>/is", $line, $matches1);
if (isset($matches1[3]))
return $matches1[3];
else
retunt false;
-~{}~ 22.10.06 03:29:
неужели мое решение единственно правильное?

хотя возможно и создание это одним регулярным выражением. это мое имхо