Pregunta

simplemente necesitan un preg_match, que se encuentra "c.aspx" (sin comillas) en el contenido si encuentra, devolverá toda la url. Como un ejemplo

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

A estas alturas debería preg_match "c.aspx" de contenido $ y dará una salida como

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

El contenido de $ debe tener más enlaces excepto "c.aspx". No quiero que ellos. Yo sólo quiero que todos url que tiene "c.aspx".

Por favor, hágamelo saber cómo puedo hacerlo.

¿Fue útil?

Solución

Se utiliza DOM para analizar HTML, no regex. Puede utilizar expresiones regulares para analizar el valor del atributo sin embargo.

Edit:. Actualizado ejemplo por lo que comprueba para 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;
            }
        }
    }
}

Otros consejos

Si usted quiere encontrar cualquier cadena delimitada con c.aspx en él:

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

Pero, en realidad, para analizar más HTML que estaría mejor con algún tipo de analizador DOM para que pueda estar seguro de lo que estás a juego es realmente un href.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top