2012-01-27 44 views
5

Tôi có dấu gạch ngang lạ trong văn bản của mình, không được phát hiện trong một số str_replace.Ký tự gạch ngang lạ trong PHP

Dưới đây là một ví dụ:

Sun: 10:00 – 3:00pm

Tôi không biết nếu các dấu gạch ngang sẽ hiển thị trên đây .. nhưng khi nó được đưa vào bàn của tôi, nó giống như một hộp vuông với ký tự 0096

Dường như giống như – - khi xem nguồn, không có ký tự đặc biệt, chỉ là dấu gạch ngang.

str_replace('–', '', $var); 

Thay thế ở trên dường như không bắt kịp, có ai khác gặp rắc rối này trước đây không?

+1

bạn nên cung cấp cho chúng tôi chuỗi ở định dạng [base64_encode] (http://www.php.net/base64_encode) để an toàn nhị phân được bảo toàn. Điều này làm cho nó ez cho chúng tôi để xác định nhân vật. – goat

+0

Chỉ cần hỏi rõ ràng nhưng bạn có tiết kiệm giá trị trả về của str_replace không? I E. '$ var = str_replace ('-', '', $ var);' str_replace không thực hiện các thao tác trực tiếp trên chuỗi. – tangrs

+0

Bạn sử dụng bảng ký tự nào? –

Trả lời

12

Đó là số en dash. Trong php, cách cầm tay nhất để có được nó là với html_entity_decode:

$endash = html_entity_decode('–', ENT_COMPAT, 'UTF-8'); 
echo str_replace($endash, '(en dash)', 'Sun: 10:00 – 3:00pm'); 

Lưu ý rằng đây chỉ hoạt động nếu mã hóa trang web của bạn là UTF-8 mã hóa soạn thảo của bạn (hoặc mã hóa của các đối số thứ ba để str_replace) là tốt. Nếu bạn sử dụng một mã hóa khác (và bạn nên sử dụng cùng một mã hóa cho cả trang web và trình soạn thảo), hãy thay thế tham số thứ ba của html_entity_decode bằng tên của nó.

0

En - Dash chúng tôi đang sử dụng để nhìn thấy
Em Dash mà chúng ta đang phải sử dụng hầu hết thời gian mà sử dụng "-".
Về cơ bản, đó là một điều ngữ pháp.

Đọc trên Wikipedia: http://en.wikipedia.org/wiki/Dash

Trên một mac (với Mỹ Keyboard Layout) Tôi làm cho nó đánh Alt + -, giống như bạn nhận được _ với shift + _

Bạn không cần bất kỳ điều trị đặc biệt nào đối với nó vì nó là một biểu tượng của Trung Quốc. Nó là một nhân vật hợp lệ. Hãy đối xử với nó như vậy: str_replace('–', 'em dash');.

1

Đối với một sự thay thế, nếu câu trả lời khác không làm việc cho bạn, như trong trường hợp của tôi, công trình này cho tôi.

$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD"; 
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title); 
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title); 
Các vấn đề liên quan