在句号之前删除空格? str_replace函数

时间:2013-07-30 18:33:12

标签: php str-replace

我正在尝试删除句点之前的所有空格和文本中的逗号,然后才回显它。

文本看起来像这样,并且全部都有空格。 Bla bla bla ...

这是我的代码,虽然它成功删除了任何()并将其替换为“nothing”:

$strip_metar = array('( )' => '', ' . ' => '. ', ' , ' => ', ');
$output_this = $text->print_pretty();
$output_this = str_replace(array_keys($strip_metar),
                           array_values($strip_metar),
                           $output_this);

有什么想法吗?

4 个答案:

答案 0 :(得分:6)

我没有50个代表所以我无法评论,但这只是为了扩展Moylin的答案:

要使其成为1个查询,请执行以下操作:

$output_this = preg_replace('/\s+(?=[\.,])/', '', $output_this);

正则表达式的解释:

\ s匹配空格

+匹配1到无穷大时间。

(?=)是一个积极的前瞻。这意味着“你必须在主要群体之后找到它,但不要包含它。”

[]是一组要匹配的字符。

\。是一个转义期(因为。匹配正则表达式中的任何内容)

,是逗号!

答案 1 :(得分:2)

要删除句点.和逗号,之前的所有空格,您可以将数组传递给str_replace函数:

$output_this = str_replace(array(' .',' ,'),array('.',','),$string);

在您提供的示例中,如果句点后面没有空格' . '

,则不会在句点前删除空格

答案 2 :(得分:1)

$output_this = preg_replace('/\s+\./', '.', $output_this);
$output_this = preg_replace('/\s+,/', ',', $output_this);

这应该是准确的。

抱歉,我不是最好将此优化为单个查询。 编辑:删除$为字符串结尾,不确定你是否会这样想。

答案 3 :(得分:0)

$content = "This is , some string .";
$content = str_replace( ' .', '.',$content);
$content = str_replace( ' ,', ',',$content);
echo $content;