Ayuda con expresiones regulares

Buenas es que necesito capturar unos datos de un texto de una página web yo e pensado de hacer lo con expresiones regulares pero no meda e ninguna forma el texto es este
3.003.102.25 Todas las apuestas (24)
Lo que esta en negrita es lo que necesito poner en la Base de datos, como te digo lo e intentado con expresiones regulares pero no meda, tu me podrías echar una manito o si hay alguna otra forma de hacerlo más fácil me podrías decir cual es. De todas formas mil gracias.

2 respuestas

Respuesta
1
En efecto, has hecho bien en pensar en las expresiones regulares para este problema, porque son muy potentes en estas situaciones.
Sólo queda encontrar el patrón adecuado, que seria el siguiente:
<?php
// Llenamos la variable $texto con el contenido de una línea del origen
$texto = '
<td class="odds usodds"><input id="sel20162044" type="hidden" value="NB^20162044^64875590^3204322^3629359^Alavés v Real Sociedad<br>Apuesta Standard (Simple)^Alavés^2/1^3.00^+200^913508^-1^-1^0^102^0^1^0^1"><a id="" class="price" href="javascript:;" onclick="javascript:addSelection(\'sel20162044\', event)">3.00</a></td>
';
// Escribimos el patrón
$patron = '.*\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)\^(.*)';
// Descomponemos la línea en los trozos del patrón
if (ereg($patron, $texto, $reg)) {
  foreach ($reg as $valor)
    echo $valor . "<br>";
} else
  echo "Patrón no reconocido";
?>
Como ves el resultado se encuentra en la matriz $reg, de donde puedes usar los datos que necesites.
Respuesta
1
¿Qué es lo que quieres hacer? ¿Rastreas un código HTML y obtener datos?
Si recorres todos los campos hidden y recoges es 'value' tienes una cadena de texto con números, letras y ^
Haciendo explode('^',$cadena) tienes un array de todos los textos y números descartando el símbolo ^
Si siempre hay la misma cantidad de cadenas, pues ves directamente a la posición que te interesa, sino, pues empieza en la posición 1 (suponiendo que la 0 es 'NB') y entonces ves recorriendo cada elemento del array y con expresiones regulares ves comprobando si son números o letras, el primer elemento que encuentres con letras será 'Alavés v Real Sociendad<br>Standard(Simple). A este le haces un ereg_replace ('<br>,'',$texto)
El siguiente 'Alavés', y el siguiente (comprobando con expresiones regulares que son números y con un punto 'float') tendrás 3.00 <--- valor que puedes obtener tambien con DOM accediento al texto escrito del TD > A
Si he entendido bien tu idea, pues este es un procedimiento que podrías seguir

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas