2013-01-14 6 views
5

Questo è quello che ho finora, ma qualunque cosa provi, il mio album-content non verrà troncato con substr().Come utilizzare la funzione substr() all'interno della funzione preg_replace()?

$gallery = preg_replace('/(<div class="album-content">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 

UPDATE:

Attiva il mio nome della classe non era corretta, e il mio regex sembra funzionare. Ho solo dovuto fare un altro str_replace() per annullare l'uscita.

$gallery = preg_replace('/(<div class="album-desc">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 
$gallery = str_replace('\"album-desc\"', '"album-desc"', $gallery); 

uscita prima di modificare:

<a href="..." class="album"> 
    <div class="album-content"><p class="album-title">Album 1</p> 
     <div class="album-desc"><p>This will be truncated by substr().</p></div> 
    </div> 
    <img src="..." /> 
</a> 

Grazie a tutti, in ogni modo!

+1

si prega di postare alcuni prima e dopo il contenuto, quindi abbiamo una migliore idea di cosa si vuole fare. –

+2

Non è possibile utilizzare 'substr()' come parte della stringa di sostituzione – Tchoupi

+0

@ MathieuImbert Sembra che funzioni ora. Vedi il mio aggiornamento. – fishbaitfood

risposta

3

Usa preg_replace_callback()

$replace = preg_replace_callback('/(asd)f/i', function($matches) { 
    $matches[1] = substr($matches[1], 0, 2); 

    return $matches[1]; 
}, 'asdf'); 

Full documentation

+0

Grazie! Penso che lo userò in futuro. – fishbaitfood

0

che sarebbe dovuto essere

..., "'$1'" . substr("$2", 0, 50) . "'$3'", ... 

con il substr "al di fuori" della stringa.

+0

Aggiornato il mio post, il mio regex sembrava funzionare. Ho provato il tuo metodo in ogni caso, ma non ha funzionato. – fishbaitfood