phpRegex怎樣去掉分行符號\r\n
現在有這麼一段字串:
abcxyz
qwerty
[abc]aaaaaaaa
bbbbbbbbb
ccccccccc[/abc]
poiuyt
lkjhgf
[abc]
dddddd
eeeeeee
ffff[/abc]
poiuy
asdfg
我希望用個Regex,把[abc]和[/abc]之間的分行符號(也就是\r\n)給替換掉。但是[abc]和[/abc]之外的字串的分行符號保留不變。
上面的是個例子,有可能是這種情況[abc]xxxx[/abc][abc]......,也就是前一個[/abc]和後一個[abc]緊挨著。
如果能相容linux和windows(分行符號好像不一樣),就更完美了。
弄了一晚上,請教了群友,仍然沒有解決,只好來麻煩大家了。
------解決方案--------------------
如果沒有嵌套:
preg_replace_callback( '~\[abc\](.*?)\[/abc\]~msi',
function($matches){
return str_replace(array("\r","\n"),'',$matches[0]);
},
$text);
------解決方案--------------------
PHP code
$s =<<< TXTabcxyzqwerty[abc]aaaaaaaabbbbbbbbbccccccccc[/abc]poiuytlkjhgf[abc]ddddddeeeeeeeffff[/abc]poiuyasdfgTXT;echo preg_replace('#\[abc].+?\[/abc]#se', 'preg_replace("/[\r\n]+/","","$0")', $s);
------解決方案--------------------
探討
PHP code
$s =<<< TXT
abcxyz
qwerty
[abc]aaaaaaaa
bbbbbbbbb
ccccccccc[/abc]
poiuyt
lkjhgf
[abc]
dddddd
eeeeeee
ffff[/abc]
poiuy
asdfg
TXT;
echo preg_replace('#\[abc].+?\[/abc]#se', 'preg_replace("/[……