Проблема заключается в использовании точки в качестве левой части оператора трубопровода, документация %>%
гласит:
Использование метки в качестве lhs Когда точка используется как lhs, результат будет функциональной последовательностью, то есть функцией, которая применяет всю цепочку правых частей по очереди к своему вводу. Смотрите примеры.
blockquote>Они даже предоставляют пример:
# Building unary functions with %>% trig_fest <- . %>% tan %>% cos %>% sin
Таким образом, в основном вы предоставляете функцию в качестве ввода для
paste
Ммм. Я уверен, что кто-то собирается придумать что-нибудь изящное / короче / приятнее, но как насчет:
$str = implode("\n", array_slice(explode("\n", $str), 4));
Если это слишком неприглядно, вы всегда можете абстрагироваться от этого:
function str_chop_lines($str, $lines = 4) {
return implode("\n", array_slice(explode("\n", $str), $lines));
}
$str = str_chop_lines($str);
РЕДАКТИРОВАТЬ : Еще немного подумать Я бы не рекомендовал использовать функцию str_chop_lines
, если вы не планируете делать это во многих частях своего приложения. Я думаю, что оригинальная однострочная строка достаточно ясна, и любой, кто наткнется на str_chop_lines
, может не понять, что по умолчанию установлено значение 4, без перехода к определению функции.
Strpos очень помогает: вот пример:
// $myString = "blah blah \n \n \n etc \n \n blah blah";
$len = strpos($myString, "\n\n");
$string = substr($myString, $len, strlen($myString) - $len);
$ string затем содержит строку после поиска этих двух новых строк подряд.
$ content = preg_replace ("/ ^ (. * \ N) {4} /", "", $ содержание);
Разбить строку на массив, используя split (rex)
, где rex
сопоставляет два последовательных перевода строки, а затем объединяет весь массив, за исключением первого элемента (который является заголовком).