Mam to:
$text = '
hello world
hello
';
Jak usunąć
tylko wtedy, gdy jest na swojej linii? Tak więc w powyższym przykładzie drugi
należy usunąć. Wyniki powinny być:
$text = '
hello world
hello
';
Co próbowałem do tej pory
Poprzez str_replace()
mogę:
$text = str_replace(' ', '', $text);
Spowoduje to jednak usunięcie wszystkich wystąpień
, nie tylko wtedy, gdy będzie on na swojej linii.
php
str-replace
Henrik Petterson
źródło
źródło
$text = str_replace('\n'.' '.'\n', '', $text);
ale nie działałem . Zobaczyć .str_replace()
zamiast oceniać moje doświadczenia. =)Odpowiedzi:
Próbowałem już tego podejścia i otrzymuję pożądany efekt
Moje wyniki na moim lokalnym są następujące:
źródło
Moje podejście to:
Wynikające z następującego kodu:
źródło
pustym tekstem, bez zdalnej całej linii: /. Pamiętaj też, że to nie ja oceniłem twoją odpowiedź :) Mój komentarz był tylko przyjazną wiadomością :)Może coś takiego:
http://sandbox.onlinephpfunctions.com/code/f4192b95e0e41833b09598b6ec1258dca93c7f06
(działa na PHP5 , ale jakoś nie działa na niektórych wersjach PHP7 )
Alternatywą byłoby:
źródło
Jeśli znasz znaki końca linii, a po tobie
zawsze pojawia się nowa linia:Dane wyjściowe (niektóre początkowe białe znaki zostały utracone podczas formatowania tutaj):
Zastrzeżenie:
wpłynie to również na każdą linię, która kończy się poprzednią treścią, więc może to nie spełniać twoich potrzeb.źródło
str_replace()
!
? Na przykład:" \n"
Możesz do tego użyć wyrażenia regularnego, używając modyfikatorów DOTALL i MULTILINE wraz z asertywnymi stwierdzeniami:
(?sm)
: DOTALL (s) MULTILINE (m)(?<=\n)
: poprzedni znak nowej linii (nie jest częścią dopasowania)\s* \s*
: single & nbsp; z opcjonalnym otaczającym spacją(?=\n)
: końcowy znak nowej linii (nie jest częścią dopasowania)źródło
Możesz podzielić na linie, a następnie zastąpić
pusty ciąg w wierszach, które zawierają tylko
spacje.Zachowamy oryginalne zakończenia linii, przechwytując je.
Wynik:
źródło