2015-10-13 23 views
10

Tôi có một chuỗi <?php $linktitle = get_the_title();?> lưu trữ tiêu đề của bài đăng. Chuỗi có một cái tên như thế này:Xóa ký tự trước và bao gồm một biểu tượng cụ thể

Nếu Wi-Fi của bạn là Khủng khiếp, Kiểm tra Router của bạn - The New York Times

Làm thế nào tôi có thể loại bỏ tất cả mọi thứ trước và kể cả ? Tôi đang sử dụng: <?php echo strstr($linktitle, '&#8211;'); ?> và nó kết quả đầu ra:

- The New York Times

+6

câu hỏi này đã được [thảo luận về meta] (http://meta.stackoverflow.com/q/309420/3367144) – kdbanman

+0

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

Trả lời

10

Hãy thử sử dụng preg_replace:

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

Nếu bạn muốn loại bỏ các khoảng trắng nằm sau - quá:

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

Quy tắc sử dụng này biểu thức ar để khớp với mẫu được xác định bởi bất kỳ ký tự nào ngoại trừ dòng mới 1 hoặc nhiều lần (.+), cho đến khi nó đáp ứng (?) khoảng trắng ((–)), rồi khoảng trắng (\s) 0 hoặc nhiều lần (*). Preg_replace sau đó thay thế mẫu phù hợp bằng một chuỗi rỗng.

+0

'$ links = preg_replace (" /.+? (–)/", '', $ linktitle);' Cảm ơn! –

+0

Dấu gạch ngang dài. Tôi vui vì bạn đã làm nó hoạt động! – Dencker

+0

Sử dụng regexp cho điều đó là hơi quá mức. Tôi khuyên bạn nên sử dụng câu trả lời của Vishnu để thay thế. – Talus

3

Tôi hy vọng bạn cần đầu ra như

- The New York Times

từ

Nếu Wi-Fi của bạn là Khủng khiếp, Kiểm tra Router của bạn - The New York Times

vì vậy hãy thử sử dụng nó có thể giúp bạn,

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

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

EDIT:

Nếu bạn cần phải loại bỏ các "–" quá. sử dụng này,

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

Cần xóa dấu gạch ngang. –

Các vấn đề liên quan