2015-10-13 1 views
10

У меня есть строка <?php $linktitle = get_the_title();?>, в которой хранится заголовок сообщения. Строка имеет название, как это:Удалить символы до и с указанием определенного символа

Если Ваш Wi-Fi ужасен, Проверьте Ваш маршрутизатор - The New York Times

Как я могу удалить все до и включая ? Я использую: <?php echo strstr($linktitle, '&#8211;'); ?> и выводит:

- The New York Times

+6

Этот вопрос в настоящее время [обсуждается на мета] (http://meta.stackoverflow.com/q/309420/3367144) – kdbanman

+0

'array_pop (взрываются ('-', $ linktitle))' – caw

ответ

10

Попробуйте использовать preg_replace:

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

Если вы хотите удалить пробел после - тоже:

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

Это использует regul ar выражение для соответствия шаблону, определенному любым символом, кроме новой строки 1 или более раз (.+), пока не встретит (?) пробел, за которым следует черточка ((–)), затем пробел (\s) 0 или более раз (*). Preg_replace затем заменяет сопоставленный шаблон пустой строкой.

+0

'$ links = preg_replace (" /.+? (–)/", '', $ linktitle);' Спасибо! –

+0

А - длинная тире. Рад, что ты заработал! – Dencker

+0

Использование regexp для этого немного перебор. Вместо этого я бы посоветовал использовать ответ Вишну. – Talus

3

Я надеюсь, что вам нужно выход как

- The New York Times

из

Если Ваш Wi-Fi ужасен, Проверьте Ваш маршрутизатор - The New York Times

так что попробуйте использовать его, возможно,

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

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

EDIT:

Если вам нужно удалить "–" тоже. использовать это,

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

Требуется снять тире. –

Смежные вопросы