PHP remove line break or CR LF with no success
我做了一个函数用 php 删除换行符但没有成功,我尝试了所有替换代码,但我仍然得到这些换行符,我创建了一个 json 文件,但由于这些行,我无法使用 jquery 从 jsonp 读取它break 似乎打破了一切。
1 2 3 4 5 6 7 8 9 10 | function clean($text) { $text = trim( preg_replace( '/\\s+/', ' ', $text ) ); $text = preg_replace("/(\ \ |\ |\ |\\t)/i", '', $text); return $text; } |
当我查看源代码时,所有 href、img 和 br 中都出现了一些换行符
这是一个 json_encode 输出
示例:
1 2 | <a href="http:\\/\\/example.com\\/out\\/content\\/" title="link to content website"> |
a 之后的换行符。
很适合 img src 和 br
我可以删除这些的唯一方法
1 |
但你知道所有字符串中都没有空格,这不是我们想要的。
这个替换对我来说效果更好:
1 2 3 4 5 |
尝试使用带有"character_mask"的默认修剪功能。
例如:
1 2 3 |
阅读官方文档http://php.net/manual/ru/function.trim.php
这个怎么样:
1 2 3 4 5 6 7 | function clean($text) { $parts = explode(' ', $text); foreach ($parts as $key => $value) $parts[$key] = preg_replace('/\\s/', ' ', $value); return implode(' ', $parts); } |
确实,如果不是像这样清理 JSON 文件,您可以使用 json_encode 来创建它,您将在上一步中解决此问题。
下面怎么样
1 2 3 4 5 6 |
第一部分
\
]+\\s*
第二部分
然后
如果你想去掉CR,保留LF,真的很简单(只是常识):
1 2 |
1 2 3 4 5 6 |
工作正常。
我使用的方法是
\
', '\
', '\
', '\\t'), array('\\\
\\\
', '\\\
', '\\\
', '\\\\t'), $text);
它的作用是让您查看导致文本中断的字符,并适当地替换它们。例如,如果您有一个"\\
" 破坏你的文本,当你使用这个代码时,它会显示一个"\\
" 代替它。例如:
1 2 | <a href="http:\\/\\/example.com\\/out\\/content\\/" title="link to content website"> |
会变成:
1 2 | <a\ href="http:\\/\\/example.com\\/out\\/content\\/" title="link to content website"> |
当然,还有很多其他的中断字符可以使用,但是\\
\\
, \\
, \\
和 \\\\t 是最常用的。
也许您可以尝试逐个字符地遍历文本并在每个字符上调用
,\
最近我遇到了一个与空格类似的问题,它甚至在 ASCII 表(或代码 194 或其他东西)内都不是不可破坏的空格。
如果您有兴趣,我的解决方案不是尝试过滤中断,而是过滤除文本中预期的内容之外的所有内容,如下所示:
1 2 | $text = preg_replace("/[^ \ a-zа-я0-9`~\\!@#\\$%\\^&\\*\\(\\)_\\+\\-\\=\\[\\]\\{\\}\\\\\\|;\\:'",\\.\\/\\<\\>\\?]+/ui","", $text); |
使用 JSON 扩展中的 json_encode() 和 json_decode() 来处理 JSON 反序列化任务:
1 2 3 4 5 6 7 | $myobj = array( 'foo' => 'bar', 'foz' => 'baz') $json_myobj = json_encode($myobj); echo $json_myobj; $myobj = json_decode($json_myobj); print_r($myobj); |