2012-04-28 6 views
1

Это сводит меня с ума, он продолжает возвращаться 0substr_count не работает с новыми строками?

substr_count('df 
d 
fd 
f 
df', '\n'); 

, если я использую письмо как «г», он отлично работает

substr_count('df 
d 
fd 
f 
df', 'd'); 

Может кто-нибудь пролить некоторый свет на это?

Благодаря

ответ

5

Вы должны использовать двойные кавычки для управляющих символов:

var_dump(substr_count('df 
d 
fd 
f 
df', "\n")); 
+0

для f sake, спасибо! – Rob

+0

@Rob: LOL, не проблема! –

+0

Почему downvote? –

4

'\ п' не то же самое, как "\ п". '\ n' - это текст, содержащий косую черту и букву «n», тогда как «\ n» является символом новой строки.

Предложите вам прочитать руководство по PHP о строках, в котором говорится о одиночных и двойных кавычках.

0

В дополнение к Alix и Mark: используйте PHP_EOL вместо \n. Новые строки отличаются на разных платформах (Windows/Linux/Mac), но PHP_EOL всегда прав. См. Этот вопрос для получения дополнительной информации по этому вопросу: When do I use the PHP constant "PHP_EOL"?

+1

Humm ... Я бы сказал, что '\ n' является более безопасным вообще, потому что он присутствует как в' \ n', так и '\ r \ n', исключение будет' \ r' (старый Mac). Если входная строка поступает из системы * nix ('\ n'), а сервер работает в Windows (' \ r \ n'), 'PHP_EOL' не будет работать. Чтобы быть в безопасности, я всегда нормализую новые строки в '\ n' со следующим регулярным выражением:' $ str = preg_replace ('~ \ r \ n? ~', "\ N", $ str); '. –

+0

@AlixAxel Хм, кажется правдивым для ввода, в соответствии с этим ответом: http://stackoverflow.com/a/4975441/251760 Не знал этого, спасибо за ваш комментарий! – Jonathan

+0

Да, пожалуйста. знак равно –