Potresti aumentare la memoria disponibile:
Codice PHP:
ini_set('memory_limit','16M'); 
ma ti consiglio di cambiare metodo per effettuare il parsing:

Mettiamo che questa sia la pagina web:

codice:
<html>
  <body>
    

testo</p>
    <span class="b"> ciao</span>
    <div>qualcosa</div>
    <span class="b"> ciao2</span>
    <span class="b"> ciao3</span>
  </body>
</html>
Te devi stampare " ciao2".

Codice PHP:
$uri 'http://www.esempio.it/'//pagina da parsare
$get file_get_contents($uri); // si prende il contenuto e se lo salva come testo (stringa) dentro la variabile $get

// per fare una prova potresti usare
/*
$get= '<html>
  <body>
    

testo</p>
    <span class="b"> ciao</span>
    <div>qualcosa</div>
    <span class="b"> ciao2</span>
    <span class="b"> ciao3</span>
  </body>
</html>';
*/

// adesso puoi usare le funzioni per le stringhe, nel tuo caso è utile strpos() e substr()
$pos1 strpos($get"span class=\"b\"");  // cerca nella stringa il testo "span class="b"" e ti restituisce la posizione (in caratteri dall'inizio) della "s" iniziale di "span...".

$pos2 strpos($get"</"$pos1); // dalla posizione 1 (il numero appena trovato) cerca "</" e ti restituisce la posizione (sempre in caratteri)

$c substr($get$pos1+15$pos2-$pos1-15); // salva in $c ula stringa dei caratteri compresi fra la posizione 1 aumentata di 15 (perchè non devi stampare '<span class...' ma solo ' ciao2' e la posizione 2 diminuita di 15 
se adesso stampi $c il risultato è 'ciao' cioè il contenuto del primo span.
per avere il secondo span devi semplicemente iterare il tutto.
Codice PHP:
$uri 'http://www.esempio.it/'//pagina da parsare
$get file_get_contents($uri); // si prende il contenuto e se lo salva come testo (stringa) dentro la variabile $get
$pos0 0// posizione da cui parte il parsing (prima dell'iterazione da 0, poi durante l'iterazione partirà dall'ultimo span trovato
$i=0;

while (
$i<=1){ //quante volte deve iterare (per l'ennesimo span aumenta il valore)
$pos1 strpos($get"span class=\"b\""$pos0);  // cerca partendo da pos0
$pos2 strpos($get"</"$pos1); // dalla posizione 1 (il numero appena trovato) cerca "</" e ti restituisce la posizione (sempre in caratteri)

$c substr($get$pos1+15$pos2-$pos1-15);
if(
$i==1){echo $c;} // se è la seconda iterazione stampa $c

$pos0 $pos2+5;
$i++;

Come per magia stamperà "ciao2". Il tempo è solo quello del caricamento dell'url esterno, lo script in sè è velocissimo.
Buona fortuna!