1

これらすべての値を同時に保持できる長い文字列があります。

hello<!>how are you? <!>I am fine<!> What is up? <!> Nothing!

私はこれらすべての可能性を見つける必要があります:

' <!> '
' <!>'
'<!> '
'<!>'

そして、それらを「\n」に置き換えます

これは、phpのstr_replaceで実現できますか?

4

7 に答える 7

6

これらの4つの可能性しかない場合は、はい、それをで行うことができますstr_replace

$str = str_replace( array( ' <!> ', ' <!>', '<!> ', '<!>' ), "\n", $str );

ええ、でもスペースが2つあるとどうなりますか?またはタブ?それぞれに空間ケースを追加しますか?

それぞれに特殊なケースを追加するか、正規表現を使用できます。

$str = preg_replace( '/\s*<!>\s*/', "\n", $str );
于 2010-02-21T20:08:04.340 に答える
4

もちろん、これはへの4回の呼び出しで実現できますstr_replace編集:私は間違っていました。で配列を使用できますstr_replace

$str = str_replace(' <!> ', "\n", $str);
$str = str_replace(' <!>',  "\n", $str);
$str = str_replace('<!> ',  "\n", $str);
$str = str_replace('<!>',   "\n", $str);

またstrtr、を使用することを検討してください。これにより、1つのステップで実行できます。

$str = strtr($str, array(
    ' <!> ' => "\n",
    ' <!>'  => "\n",
    '<!> '  => "\n",
    '<!>'   => "\n"
));

または、正規表現を使用できます

$str = preg_replace('/ ?<!> ?/', "\n", $str);
于 2010-02-21T20:02:04.870 に答える
1

あなたは確かにこのようにstr_replaceでそれを行うことができます:

$needles = array(" <!> ","<!> "," <!>","<!>");
$result = str_replace($needles,"\n",$text);
于 2010-02-21T20:02:09.967 に答える
0

編集:preg_replace('/\s*<!>\s*', PHP_EOL, $string);より良いはずです。

もちろん、str_replace('<!>', "\n", $string);例が完成していれば。

于 2010-02-21T20:00:17.403 に答える
0

だけではできませんstr_replaceexplode、、、またはuserの組み合わせを使用しstripます。implodepreg_replace

于 2010-02-21T20:03:16.173 に答える
0

あなたが使用することができます:

//get lines in array
$lines = explode("<!>", $string);
//remove each lines' whitesapce
for(i=0; $i<sizeof($lines); $i++){
    trim($lines[$i]);
}
//put it into one string
$string = implode("\n", $lines)

少し面倒ですが、これでうまくいくはずです(2つのスペースとタブも削除されます)。(コードをテストしなかったため、エラーが発生する可能性があります)

于 2010-02-21T20:10:43.137 に答える
0

これは一種のきちんとしたものです:

$array = explode('<!>', $inputstring);
foreach($array as &$stringpart) {
  $stringpart = trim($stringpart);
}
$outputstring = implode("\r\n", $array);
于 2010-02-21T20:14:04.930 に答える