web-dev-qa-db-ja.com

PHP改行またはCRを削除LF成功しなかった

私はphpで改行を削除する機能を実行しましたが成功しませんでしたが、すべての置換コードを試しましたが、まだこれらの改行があります、jsonファイルを作成しましたが、これらの改行のためにjsonpからjqueryで読み取ることができませんすべてを壊します。

function clean($text)
{
$text = trim( preg_replace( '/\s+/', ' ', $text ) );  
$text = preg_replace("/(\r\n|\n|\r|\t)/i", '', $text);
return $text;
}

ソースを見ると、すべてのhref、img、brに改行があります。これはjson_encodeの出力例です。

<a
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">

改行後a。それはimgsrcとbrへのハペニグです

私がこれらを取り除くことができる唯一の方法はそれを壊します

$text = preg_replace("/\s/i", '', $text);

しかし、あなたはすべての文字列にスペースが残っておらず、それが私たちが望んでいるものではないことを理解しています。

12
Gino

この置換は私にとってよりうまく機能します:

= str_replace (array("\r\n", "\n", "\r"), ' ', $text)
27
Jirka Kopřiva

これはどう:

function clean($text)
{
    $parts = explode(' ', $text);
    foreach ($parts as $key => $value)
        $parts[$key] = preg_replace('/\s/', ' ', $value);
    return implode(' ', $parts);
}

実際、このようにJSONファイルをクリーンアップする代わりに、 json_encode を使用して作成できる場合は、前の手順でこの問題を取り除くことができます。

1
J. Bruni

次はどうですか

_function clean($text)
{
    return trim(preg_replace("/(\s*[\r\n]+\s*|\s+)/", ' ', $text));
}
_

最初の部分_\s*[\r\n]+\s*_は、改行を置き換えます。これは先頭のスペースであり、末尾のスペースは1つのスペースになります。

2番目の部分_\s+_は、スペースを1つのスペースに縮小します。

次に、trim()は先頭/末尾のスペースを削除します。

1
Jack Ting

「character_mask」でデフォルトのトリム機能を使用してみてください。

例えば:

$text = trim($text, " \t\n\r\0\x0B"); 

公式ドキュメントを読む http://php.net/manual/ru/function.trim.php

1
Correcter

CRを削除してLFを保持したい場合、それは本当に非常に簡単です(常識です)。

$text = str_replace("\r", "", $text);
0
Apostolos
function clean($text)
{
    return trim(preg_replace('/\\\\r|\\\\n|\\\\t/i', ' ', $text));
}

正常に動作します。

0
Gökhan Yilmaz

たぶん、テキストを1文字ずつ歩き、それぞれでord()を呼び出して、これらのブレーク文字が本当に\r,\nsであるかどうかを確認できますか?

最近、空白で同様の問題が発生しました。これは、ASCIIテーブル(ordコード194など)の内部でも壊れないスペースであることが判明しました。

あなたが興味を持っているなら、私の解決策は、休憩をフィルタリングしようとするのではなく、テキストにあると予想されるものを除いてすべてをフィルタリングすることでした。

$text = preg_replace("/[^ \na-zа-я0-9`~\!@#\$%\^&\*\(\)_\+\-\=\[\]\{\}\\\|;\:'\",\.\/\<\>\?]+/ui", "", $text);
0
Tony Bogdanov

jSON拡張機能の json_encode() および json_decode() を使用して、JSON逆シリアル化タスクを処理します。

$myobj = array( 'foo' => 'bar', 'foz' => 'baz')

$json_myobj = json_encode($myobj);
echo $json_myobj;

$myobj = json_decode($json_myobj);
print_r($myobj);
0
rjz

私が使用するメソッドはecho str_replace(array('\r\n', '\r', '\n', '\t'), array('\\r\\n', '\\r', '\\n', '\\t'), $text);です。

これにより、テキストの区切りの原因となっている文字を確認し、適切に置き換えることができます。たとえば、テキストを分割する「\ n」がある場合、このコードを使用すると、代わりに「\ n」が表示されます。例:

<a
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">

になります:

<a\n href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">

当然、使用できる破壊文字は他にもたくさんありますが、最も一般的に使用されるのは\ r\n、\ r、\ n、\ tです。

0
Connor Deckers