gpt4 book ai didi

php - 如何分割包含下划线、破折号和空格的字符串

转载 作者:行者123 更新时间:2023-12-02 04:04:36 26 4
gpt4 key购买 nike

我有一个像

这样的字符串
$str = "hyper text-markup_language";
$keywords = preg_split("/[_,-, ]+/", $str);

我使用了preg_split,但它根据下划线和破折号分割字符串,而不是根据空格分割字符串。

我想要这样的结果

[0] = hyper
[1] = text
[2] = markup
[3] = language

最佳答案

很好又简单的解决方案。

<?php
$str = "hyper text-markup_language";
$arr = preg_split("/[_,\- ]+/", $str);
var_dump($arr);
?>

这会产生此输出。

array (size=4)
0 => string 'hyper' (length=5)
1 => string 'text' (length=4)
2 => string 'markup' (length=6)
3 => string 'language' (length=8)

问题是当您编写 - 字符时,正则表达式将其读取为从逗号到逗号的范围值(这显然只是一个逗号)。

转义连字符并删除重复的逗号(方括号表示内部所有内容的列表)将生成一个数组。

正则表达式解释

方括号称为Character Sets .
它们会匹配其中的任何内容。请参阅此示例。

/gr[ae]y/

这将匹配graygrey。这是因为方括号匹配 ae。将上面的内容更改为 /gr[a-e]y/ 意味着 graygrbygrcygrdygrey 都会匹配。这是因为连字符 (-) 是一个特殊字符,它将创建一个从连字符之前到连字符之后的列表。

另一种方法(遵循@anubhava评论)是将连字符放在字符集的开头或结尾,以便不需要转义,因为如果前面或后面没有任何内容,它就无法创建范围。

关于php - 如何分割包含下划线、破折号和空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com