我希望将文本字符串拆分为由空格分隔的单词。 我用
$words=explode(" ", $text);
不幸的是,这种方法对我来说效果不好,因为我想知道它们之间有多少个空格。
有没有更好的方法来做到这一点,而不是通过整个$ text,逐个符号,使用while
语句用整数填充$ space($spaces=array();
)(空格数,in大多数情况下它是1)并将文本读入$ words = array()逐个符号?
这是一个额外的解释。
$text="Hello_world_____123"; //symbol "_" actually means a space
需要:
$words=("Hello","world","123");
$spaces=(1,5);
答案 0 :(得分:2)
改为使用正则表达式:
$words = preg_split('/\s+/', $text)
修改强>
$spaces = array();
$results = preg_split('/[^\s]+/', $text);
foreach ($results as $result) {
if (strlen($result) > 0) {
$spaces [] = strlen($result);
}
}
答案 1 :(得分:1)
有很多方法可以做你想做的事情,但我可能会选择preg_split()和array_map()的组合:
$text = 'Hello world 123';
$words = preg_split('/\s+/', $text, NULL, PREG_SPLIT_NO_EMPTY);
$spaces = array_map(function ($sp) {
return strlen($sp);
}, preg_split('/\S+/', $text, NULL, PREG_SPLIT_NO_EMPTY));
var_dump($words, $spaces);
输出:
array(3) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "world"
[2]=>
string(3) "123"
}
array(2) {
[0]=>
int(1)
[1]=>
int(5)
}
答案 2 :(得分:0)
你仍然可以得到两者之间的空格数:
$words = explode(" ", $text);
$spaces = sizeof($words)-1;
这不适合你吗?