¿Cómo encontrar una dirección URL de un contenido en PHP?
-
11-09-2019 - |
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&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&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.
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&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.