Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))

Как найти в строке первую ссылку на определенную страницу?

Ковырял, ковырял php.net но так и не нашел нужной функции, да и вобще с регулярками у меня туго...
Нужно найти первую ссылку где href="/item.php?..." она чаще всего обернута в <span class="abcd_1">....</span>
Вот мне нужно получить имя класса первой ссылки на item.php, а если нету спана, то вернуть 0...
Вобще не могу сообразить как реализовать, хотяб ткните в какую функцию или еще во что-то...

Если будет проще, могу разбить строку на массив, и найти елемент с нужной ссылкой... останется регулярка на поиск спана, если нету, то вернуть 0... могу конечно строковыми функциями понарезать строку... но это костыли)
  • Вопрос задан
  • 234 просмотра
Решения вопроса 2
g_hagmt
@g_hagmt
Начинающий веб-разработчик
Я конечно понимаю что есть уже принятый ответ, но когда я увидел этот вопрос, мне стало интересно как у меня получится решить это. Было бы обидно просто выкинуть этот код, так что вот:
$string = file_get_contents("page.html");
preg_match('#\<a.*href="/item\.php.*\</a\>\</span\>#U', $string, $matches);
preg_match('#class="(.*)"#U', $matches[0], $match);
echo $class = rtrim(str_replace("class=\"", "", $match[0]), '"');

Может подойдет лучше. Тем более, что регулярка написанная xEpozZ не соответствует, как я понял, структуре твоего документа.
Ответ написан
xEpozZ
@xEpozZ
Веб-разработчик
Для "одноразовой работы" никакие Simple HTML DOM не нужны. Нужно уметь быстро справляться с задачей, а не копаться в документации по Simple HTML DOM
Вот код
<?php
$text = <<<TEXT
<span class="abcd_1">
    <a href="items.php?id=1">Item 1</a>
    <a href="items.php?id=2">Item 2</a>
    <a href="items.php?id=3">Item 3</a>
</span>
TEXT;

$countItems = preg_match('|<span class="abcd_1">.+<a href="(items.php\?id=\d+)"|sU', $text, $matches);
if ($countItems > 0){
    echo 'link: ' . $matches[1];
} else {
    echo 'Count 0';
}
тут можно попробовать в живую.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@fishouk
Web программист
Simple HTML Dom, попробуйте эту библиотеку или любой другой парсер дом на php. Это будет проще и эффективнее, чем регулярные выражения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 09:44
20000 руб./за проект
29 мар. 2024, в 09:31
1000 руб./в час
29 мар. 2024, в 07:55
15000 руб./за проект