2016-03-24 2 views
1

Идея состоит в том, чтобы удалить все неалфавитные символы из строки.php preg_replace игнорирует^in [abc] construction

$string = "abcd 5858add"; 
print preg_replace('/[ˆa-z]/', '', $string)."\n"; //produces ' 5858' (wrong) 
print preg_replace('/[a-z]/', '', $string)."\n"; //produces ' 5858' (right) 

Первое регулярное выражение должно удалить все неалфавитные символы. Второй должен удалить все символы алфавита. Но результат тот же для обоих. Почему?

Испытано на PHP 5.5.30, PHP 5.4.16

+0

После публикации моего ответа я просто заметил ваше название, которое показывает проблему довольно четко :) –

ответ

3

Это не каретка, это огибающая акцент.

Использовать [^a-z] вместо [ˆa-z].

+0

Какой ястреб! – Toto

+0

Отлично! Спасибо. P.S. Это трюк макета MAC: Shift + 6 дают circumflex и Shift + 6 и Space дают каретку. –