2015-10-13 11 views
10

Ho una stringa <?php $linktitle = get_the_title();?> che memorizza il titolo del post. La stringa ha un titolo come questo:Rimuovere i caratteri prima e includendo un simbolo specifico

se il vostro Wi-Fi è terribile, Controllare il router - Il New York Times

Come posso rimuovere tutto prima e compreso il ? Sto utilizzando: <?php echo strstr($linktitle, '&#8211;'); ?> e uscite:

- Il New York Times

+6

Questa domanda è in [discusso su meta] (http://meta.stackoverflow.com/q/309420/3367144) – kdbanman

+0

'array_pop (explode ('-', $ linktitle))' – caw

risposta

10

Provare a utilizzare preg_replace:

preg_replace("/.+?(–)/", '', $linktitle) 

Se si desidera rimuovere lo spazio vuoto dopo il - troppo:

preg_replace("/.+?(–)\s*/", '', $linktitle) 

Questo utilizza Regul ar espressione per abbinare un pattern definito da qualsiasi carattere tranne newline 1 o più volte(), uno spazio seguito da un trattino ((–)), quindi uno spazio bianco (\s) 0 o più volte (*). Preg_replace quindi sostituisce il modello abbinato con una stringa vuota.

+0

'$ links = preg_replace (" /.+? (–)/", '', $ linktitle);' Grazie! –

+0

Ah - trattino lungo. Sono contento che tu abbia funzionato! – Dencker

+0

L'uso di un'espressione regolare per quello è un po 'eccessivo. Consiglierei di usare invece la risposta di Vishnu. – Talus

3

spero è necessario output come

- Il New York Times

da

se il vostro Wi-Fi è terribile, Controllare il router - Il New York Times

quindi provate ad usarlo può esservi d'aiuto,

$linktitle = "If Your Wi-Fi Is Terrible, Check Your Router – The New York Times"; 

    echo substr($linktitle,strrpos($linktitle,'–')); 

EDIT:

Se è necessario rimuovere il "–" troppo. utilizzare questo,

$linktitle   = "If Your Wi-Fi Is Terrible, Check Your Router – The New York Times"; 
$specCharLen = strlen(htmlentities("–")); 
echo substr($linktitle,strrpos($linktitle,'–')+$specCharLen); 
+0

Richiede anche il trattino rimosso. –

Problemi correlati