Как найти URL-адрес из контента по PHP?

нужен просто preg_match, который найдет «c.aspx» (без кавычек) в содержимом, если он найдет, он вернет весь URL. В качестве примера

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a><br/>'; 

теперь он должен preg_match «c.aspx» из $ content и даст результат как

 "/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212" 

В $ content должно быть больше ссылок, кроме «c.aspx». Я не хочу их. Мне нужен только весь url, у которого есть «c.aspx».

Пожалуйста, дайте мне знать, как я могу это сделать.

Related of "Как найти URL-адрес из контента по PHP?"

Вы используете DOM для разбора HTML, а не для регулярного выражения. Однако вы можете использовать регулярное выражение для анализа значения атрибута.

Изменить: обновленный пример, чтобы он проверял c.aspx.

 $content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;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.