2012-01-03 80 views
0

我有一个像这样的字符串text more text "empty space"。 如何更换"empty space"中的空格,并且只有###这个空格?使用###替换空字符在PHP中的字符串“”之间的文本

+1

请不要在您的文章上签名。 – 2012-01-03 22:07:38

+0

我只想替换“”之间的文本空格。所以reult应该看起来像文本更多的文字“空###空间” – user998163 2012-01-03 22:13:36

+1

这个问题是总体混乱。而不是“文本更多文本”..提供一个真正的Exaple。 “这是一个文本字符串,我希望它以某种方式被改变。”这显示字符串确切地如何改变。 – 2012-01-03 22:32:21

回答

1

这个怎么样,有没有正则表达式:

$text = 'foo bar "baz quux"'; 
$parts = explode('"', $text); 
$inQuote = false; 

foreach ($parts as &$part) { 
    if ($inQuote) { $part = str_replace(' ', '###', $part); } 
    $inQuote = !$inQuote; 
} 

$parsed = implode('"', $parts); 
echo $parsed; 
+0

似乎工作。谢谢! – user998163 2012-01-03 22:40:21

1
$somevar = "empty space"; 
$pattern = "/\s/"; 
$replacement = "###"; 
$somevar2 = preg_replace($pattern, $replacement, $somevar); 
echo $somevar2; 
+0

这将做所有的空间。如果这是一个大块文本,模式将是空的\ sspace和替换将是空的###空间 – 2012-01-03 22:11:17

+0

请看看我上面的评论。 – user998163 2012-01-03 22:14:19

1
$string = "My String is great"; 
$replace = " "; 
$replace_with = "###"; 

$new_string = str_replace($replace, $replace_with, $string); 

这应该为你做它。 http://www.php.net/manual/en/function.str-replace.php

+0

乔治在看到更新后的问题后提供了正确的答案。 – 2012-01-03 22:11:50

+0

请看看我上面的评论。 – user998163 2012-01-03 22:14:35

3
$string = 'text more text "empty space"'; 
$search = 'empty space'; 
str_replace($search, 'empty###space', $string); 
+0

+1在没有必要时不使用正则表达式 – 2012-01-03 22:15:03

+0

@George文本将被改变...“空白空间”仅用于演示 – user998163 2012-01-03 22:17:29

+0

@ user1067506我从您的评论中看到,这在原始文章中并不清楚。处理另一个解决方案。 – 2012-01-03 22:18:12

1

后您编辑评论

也许它不是最好的解决办法,但你可以做这样的:

$string = 'text more text "empty space"'; 
preg_match('/(.*)(".*?")$/', $string, $matches); 
$finaltext = $matches[1] . str_replace(' ', '###', $matches[2]);