нужен просто preg_match, который найдет «c.aspx» (без кавычек) в содержимом, если он найдет, он вернет весь URL. В качестве примера
$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&n=783622212">New message</a><br/>';
теперь он должен preg_match «c.aspx» из $ content и даст результат как
"/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&n=783622212"
В $ content должно быть больше ссылок, кроме «c.aspx». Я не хочу их. Мне нужен только весь url, у которого есть «c.aspx».
Пожалуйста, дайте мне знать, как я могу это сделать.
Вы используете DOM для разбора HTML, а не для регулярного выражения. Однако вы можете использовать регулярное выражение для анализа значения атрибута.
Изменить: обновленный пример, чтобы он проверял c.aspx.
$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&n=783622212">New message</a> <a href="#bar">foo</a> <br/>'; $dom = new DOMDocument(); $dom->loadHTML($content); $anchors = $dom->getElementsByTagName('a'); if ( count($anchors->length) > 0 ) { foreach ( $anchors as $anchor ) { if ( $anchor->hasAttribute('href') ) { $link = $anchor->getAttribute('href'); if ( strpos( $link, 'c.aspx') ) { echo $link; } } } }
Если вы хотите найти любую строку с цитированием в c.aspx:
/"[^"]*c\.aspx[^"]*"|'[^']*c\.aspx[^']*'/
Но на самом деле, для синтаксического разбора большинства HTML вам было бы лучше с каким-то DOM-парсером, чтобы вы могли быть уверены в том, что вы соответствуете, это действительно href.