PHP preg_split删除逗号和尾随空格


PHP preg_split remove commas and trailing white-space

下面的代码直接取自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
)

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

因此,

我希望能够保持"超文本语言"不变,因此只去除字符串开头和结尾的空格以及逗号后的任何空格,而不是可能是短语的单词之间。

我认为这是

最好的选择。

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

首先,"正则表达式要慢得多"是错误的,因为它总是取决于模式。在这种情况下,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

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

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

这将输出:

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

演示

$to= xyz@ab.com,aaa@abc.com,bbb@abd.com,cc@abe.com;
$toArr = preg_split('[',]', $to);