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

我有一个像

$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)

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

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

正则表达式解释

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

/gr[ae]y/

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

另一种选择(在@anubhava注释之后)是将连字符放在字符集的开头或结尾,以使其不需要转义,因为如果前面或后面没有任何内容,则无法创建范围。

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

将大字符串分成多个小字符串-PHP - php

我从数据库中获取了一个长字符串,我需要对其进行解析,以使其不包含一个大字符串,而是多个,其中每个字符串都有2个字符。让我们以示例为例:我连接到表,获取此字符串:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,之后,我必须对字符串进行解析,因此:B1 C1 F4 G6 H4 I7 J1 J8 L5 O6 P2 Q1 R6 T5 U8 V1…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…