web-dev-qa-db-ja.com

独自の行にある場合にのみ用語を削除する

私はこれを持っています:

_$text = '
   hello world
    
    hello
';
_

_ _ onlyがそれ自体の行にある場合、どのように削除しますか?したがって、上記の例では、2番目の_ _を削除する必要があります。結果は次のようになります。

_$text = '
   hello world

    hello
';
_

これまでに試したこと

str_replace()を使用して、次のことができます。

_$text = str_replace(' ', '', $text);
_

しかし、それはそれがそれ自身の行にあるときだけではなく、_ _のallインスタンスを削除します。

15

行に分割し、 と空白のみを含む行の空の文字列を に置き換えることができます。

キャプチャして、元の行末を維持します。

<?php

$text = '
   hello&nbsp;world
   &nbsp;
   &nbsp;hello
';
$lines = preg_split('@(\R)@', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach($lines as &$v)
    if (trim($v) === '&nbsp;')
        $v = str_replace('&nbsp;', '', $v);

$result = implode($lines);
var_dump($result);

出力:

string(40) "
   hello&nbsp;world

   &nbsp;hello
"
0
Progrock