Я хочу читать строки за строкой, но я не хочу иметь дело с новой строкой, я хочу, чтобы она была удалена, поэтому я получаю только содержимое строки.
Поэтому сейчас моя функция:
function getProductCount($path) { $count = 0; foreach (file($path) as $name) { if($name == "<product>\n") { $count = $count + 1; } } return $count; }
Но в идеале я бы хотел:
function getProductCount($path) { $count = 0; foreach (file($path) as $name) { if($name == "<product>") { $count = $count + 1; } } return $count; }
Есть ли способ также удалить возврат каретки?
благодаря
http://www.php.net/manual/en/function.file.php
Посмотрите на дополнительные флаги, которые вы можете добавить к вызову функции. Вы должны использовать "FILE_IGNORE_NEW_LINES"
Вы можете выполнить rtrim()
в строке в начале каждой итерации цикла.
function getProductCount($path) { $count = 0; foreach (file($path) as $raw_name) { $name = rtrim($raw_name); if($name == "<product>") { $count = $count + 1; } } return $count; }
Используйте trim()
или rtrim()
(если вы хотите сохранить пробелы в начале строки), чтобы удалить пробелы.
вы можете посмотреть: http://php.net/trim и http://php.net/str_replace (чтобы вы могли заменить eol пустым символом)
Либо регулярное выражение (получение последнего появления \ n в строке и удаление его), либо просто $name = substr($name, 0, -2)
сделало бы трюк