2012-07-06 70 views
0

什么是最佳的方式从字符串中提取每个词,如:提取物标签(字)

one, two, "big three", four, "seven and eight" 

其中那些具有双引号应该被视为一个单一的元素:

array("one", "two", "big three", "four", "seven and eight") 

回答

0

如果你使用php> = 5.3,那么你有str_getcsv函数。

$tags = str_getcsv($tags, ',', '"', '\\'); 
$tags = array_map('trim', $tags); 
0

你可以使用:

$tags = explode(',', $string); 
foreach($tags as &$tag) 
{ 
    $tag = trim($tag); 
} 

(代码不打勾)

+2

这不会处理某些输入权限,例如:... two,“big,three”,four,... – Ron 2012-07-06 08:51:01

+0

为什么&$ tag?这是因为php5 – Ron 2012-07-06 08:54:26

+0

@Ron:真的吗?为什么?你现在应该如何迭代和修改? – Eric 2012-07-06 08:55:41

3

您应该使用CSV解析器,而不是滚动自己的。 PHP有一个内置的功能,你想要做— str_getcsv正是:

$tags = str_getcsv($string); 
foreach($tags as $tag) { 
    ... 
} 

注意,这需要PHP 5.3。 “用户贡献的笔记”显示了很多解决方法。