PHP preg_split删除逗号和尾随空格

时间:2013-10-24 17:36:18

标签: php preg-split

以下代码直接来自PHP: preg_split - 手册

示例#1 preg_split()示例:获取搜索字符串的部分

<?php
// split the phrase by any number of commas or space characters,
// which include " ", \r, \t, \n and \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>

以上示例将输出:

Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
)

我正在创建一个标记系统,允许人们在文本框中输入任何内容,并在返回时处理文本并将其插入数据库。数据可以是一个单词或短语,如果输入多个标签,则会使用逗号分割。

因此我希望能够按原样保留“超文本语言”,因此只删除字符串开头和结尾处的空格以及逗号后的任何空格,但不能可能是短语的单词。

3 个答案:

答案 0 :(得分:5)

我认为这是最好的选择。

$keywords = preg_split('/\s*,\s*/', "hypertext language, programming");

首先&#34;正则表达式要慢得多&#34;是错的,因为它总是取决于模式。在这种情况下,preg_split()更快。

第二 preg_split更具可读性,因为练习显示更有利可图的选项。保持简单。

$b = "hypertext language, programming";

$time = microtime(1);
for ($i=1; $i<100000; $i++)
    $a = array_map('trim', explode(',', $b)); // Split by comma
printf("array_map(trim), explode  = %.2f\n", microtime(1)-$time);

$time = microtime(1);
for ($i=1; $i<100000; $i++)
    $a = preg_split('/\s*,\s*/', $b);     // Split by comma
printf("Preg split = %.2f\n", microtime(1)-$time);

array_map(trim), explode  = 0.32
Preg split = 0.22

答案 1 :(得分:4)

您可以使用array_map()explode()trim()

<?php
    $keywords = array_map('trim', explode(',', 'hypertext language, programming'));
    print_r($keywords);
?>

将输出:

Array
(
    [0] => hypertext language
    [1] => programming
)

DEMO

答案 2 :(得分:0)

$to= xyz@ab.com,aaa@abc.com,bbb@abd.com,cc@abe.com;

$toArr = preg_split('[\,]', $to);