2011-01-13 14 views
1

Ich habe eine lange Zeichenfolge, die darin eingebettet hat: "ABC_1_" und "ABC_2_" und "ABC_3_" usw.php regex - Löschen Phrase

Zum Beispiel:

"lorum ipsum ABC_1_ doit more ABC_3_ and so on". 

Ich brauche eine PHP preg_replace zu schreiben, entfernen wird die 6 Zeichen (ABC_xx), wenn die ersten 4 sind "ABC_" und den vollen Rest String zurück, in meinem Beispiel:

"lorum ipsum doit more and so on". 

Danke!

Antwort

2

Try this:

$s = preg_replace('/\bABC_../', '', $s); 

Die \b entspricht eine Wortgrenze, und die Punkte jedes Zeichen (abgesehen von neuer Linie).

Voll Beispiel:

<?php 
$s = 'ABC_1_foo lorum ipsum ABC_1_ doit more ABC_3_ and so on'; 
$s = preg_replace('/\bABC_../', '', $s); 
echo $s; 
?> 

Ergebnis:

 
foo lorum ipsum doit more and so on 

(ideone)

+0

th Es funktioniert. Ich habe das \ b entfernt, weil die Phrase möglicherweise nicht auf einer Wortgrenze steht. Aber das habe ich in meiner Frage nicht angegeben. VIELEN DANK!!! – sdfor

+0

@sdfor: Der Grund für die Wortgrenze war, dass sie DABC_D_ nicht zufällig entspricht. Aber wenn Sie das wollen, dann brauchen Sie ja die Wortgrenze nicht. –

3

Verwenden preg_replace mit regulärem Ausdruck: (ABC_.{2})

$string = "lorum ipsum ABC_1_ doit more ABC_3_ and so on"; 
$pattern = "/(ABC_.{2})/"; 
$replacement = ""; 
echo preg_replace($pattern, $replacement, $string); 
+0

Danke! Schönes Bassschlüssel-Symbol! – sdfor

+0

Ich wusste nicht, wie es heißt. Jetzt weiß ich :) – Chandu