如果还没有空格,如何在子字符串周围添加空格?

Eri*_*rik 5 php parsing spaces emoticons

示例输入字符串:test:)test:)test:) :) test:p test
通缉输出字符串:test :) test :) test :) :) test :p test

正如您在上面的示例中所看到的,我想解析字符串并生成一个输出字符串,并在所有预定义的笑脸代码周围添加空格.

我试图通过几个循环来做到这一点,但最终它没有像预期的那样100%工作,而且在大型文档上速度非常慢.

所以我想知道用PHP进行这种解析最好和最有效的方法是什么?

dok*_*dus 0

您可以使用str_replace函数来代替正则表达式。PHP函数str_replace可以接收数组作为参数,所以你可以试试这个:

$input = 'test:)test:)test:) :) test:p test';
$smileys = array( ':)', ':p' );
$smileys_with_spaces = array( ' :)', ' :p' );
$output = str_replace( $smileys_with_spaces, $smileys, $input ); // test:) :) -> test:):)
$output = str_replace( $smileys, $smileys_with_spaces, $input ); // test:):) -> test :) :)
Run Code Online (Sandbox Code Playgroud)