Pergunta

precisa de um simples preg_match, que vai encontrar "c.aspx" (sem aspas) no conteúdo se encontra, ele irá retornar toda a url. Como um exemplo

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

Agora deve preg_match "c.aspx" de US $ conteúdo e vai dar uma saída como

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

A $ content deve ter mais links, exceto "c.aspx". Eu não quero que eles. Eu só quero que todos url que tem "c.aspx".

Por favor, deixe-me saber como eu posso fazer isso.

Foi útil?

Solução

Você pode usar DOM para analisar HTML, não regex. Você pode usar regex para analisar o valor do atributo embora.

Edit:. Exemplo atualizado para ele verifica 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;
            }
        }
    }
}

Outras dicas

Se você quiser encontrar qualquer string com c.aspx nele:

/"[^"]*c\.aspx[^"]*"|'[^']*c\.aspx[^']*'/

Mas, realmente, para analisar mais em HTML que você seria melhor fora com algum tipo de analisador DOM de modo que você pode ter certeza que você está combinando é realmente um href.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top