2011-01-06 12 views
11

come dice il titolo ho una stringa come questa:rimuovere <br> 's dalla fine di una stringa

$string = "Hello World<br>hello world<br><br>"; 

Ora voglio sbarazzarsi dei <br> s alla fine di questa stringa in modo che appaia in questo modo:

$string = "Hello World<br>hello world"; 

ho provato questo:

preg_replace('/^(<br>)*/', "", $string); 

ma questo non ha funzionato. forse qualcuno conosce la regex corretta.

saluti Peter

+0

nota La tua domanda dice " ora voglio sbarazzarmi di "s" ... metti il ​​'
' nei backtick ('\' ') in modo che compaia :) – NickAldwin

+0

È un po 'oscuro quello che vuoi. Vuoi '
' 's all'interno della stringa da convertire in '\ n' (newline) e'
'alla fine della stringa da rimuovere? Quindi nel tuo esempio, la stringa risultante dovrebbe essere "Hello world \ nhello world" '? Se è così, probabilmente hai bisogno di due regexp-replace, uno per il caso newline e un altro per lo strip case. Si prega di modificare la domanda per essere più specifici. –

+0

nessuna stringa risultante dovrebbe apparire come questo "Hello World
hello world". la soluzione di NickAldwin e Alex Howansky fa il segno. grazie ancora. –

risposta

15

Sei vicino, hai usato^all'inizio della regexp, che significa "corrisponde all'inizio della stringa". Vuoi $ alla fine, il che significa "Abbina la fine della stringa".

preg_replace('/(<br>)+$/', '', $string); 
+0

grazie. questo funziona! –

+0

Che non funziona per

sln

+0

E per, ''
, questo sembra funzionare per me: 'preg_replace ('/ (
) + $ /', '', $ string);' –

0

Prova preg_replace('/(<br>)+$/', "", $string);

EDIT: Ops, questo dovrebbe funzionare ora.

+0

anche grazie. simpatico. –

10

Solo per chiunque altro che arriva lungo questo, come ho, alla ricerca di un modo per rimuovere eventuali tutti i tag di interruzione dalla fine di una stringa, tra cui:

<br> <br/> <br /> <br    /> <br  > 

ho usato:

$string = preg_replace('#((){0,}<br({0,})(/{0,1})>){1,}$#i', '', $string); 

con grande effetto. Questo li spaccherà anche se hanno uno spazio bianco tra ciascuno. Avrai bisogno di aggiustare per ogni \ n \ r ecc, se è quello che ti serve.

+0

Grazie! Il tuo sollution ha funzionato alla grande per me, ma ho bisogno anche di spogliarli dall'inizio della stringa, sai come posso farlo? –

+0

Non ho avuto il tempo di provarlo ma questo dovrebbe rimuoverli dall'inizio di una stringa: $ string = preg_replace ('#^(() {0,}
) {1,} # i ',' ', $ stringa); –

2

Le espressioni regolari sono potenti, ma credo che questo caso è più semplice, rtrim dovrebbe funzionare

$string = rtrim($string,'<br>'); 
+6

Questo non fa quello che pensi che faccia. Rimuoverà _any_ dei caratteri '<', 'b',' r', o '>', in qualsiasi ordine, dalla fine della stringa, se presente - quindi 'Mi piace il rabarbaro
' diventerà 'Mi piace rhuba' e '' diventerà ' jonathanm

+0

Grazie per il suggerimento utile –

Problemi correlati