如何在 PHP 中按特定字符拆分/分解字符串



我有这个字符串:

$str= 'To do list: - Buy milk - Feed cat';

如何通过检查:-字符的存在将其转换为

To do list:
- Buy milk
- Feed cat

我正在考虑创建一个 reg 表达式来检查字符串是否包含 :-字符,然后为每个匹配项添加一个 <br> 标签。按这些参数拆分后...

无需爆炸,您可以使用正则表达式非常轻松地将输入文本转换为所需的格式:

s*(-s*) 

并根据您的要求替换为n$1或(<br>而不是n

现场演示在这里

使用 php preg_replace的示例代码:

$re = '/s*(-s*)/';
$str = 'To do list: - Buy milk - Feed cat';
$subst = '\n$1';
$result = preg_replace($re, $subst, $str);
echo $result; //To do list:n- Buy milkn- Feed cat
你可以

简单地用preg_split来做到这一点:

$str='To do list: - Buy milk - Feed cat';
$keywords = preg_split("/[-]+/", $str);

$keywords = explode("-", $str);

测试 1:https://eval.in/893167

测试 2(带爆炸):https://eval.in/893167

试试这个:

$str ='';
$x1 = $x = array();
$str = 'To do list: - Buy milk - Feed cat';
$x  = explode(":",$str);
$x1 = explode(" - ",$x[1]);
echo $x[0];
echo "<br/>";
foreach($x1 as $y){
 echo $y."<br/>";
}

这可以简单地使用没有正则表达式的分解函数来完成。方法如下

将输入数据分成 2 个数组元素。

$x = explode(":",$str);

所以 x 现在是一个数组,第一个元素在 : 之前有文本,第二个元素有包含任务的字符串。

$tasks = explode("-",$x[1]);

现在任务是一个数组,每个元素都包含待办事项列表。


或单行实现。 $tasks = explode("-", explode(":",$str)[1] );

尝试使用 preg_split()preg_split("/[s,-:]+/", $str)

http://php.net/manual/fr/function.preg-split.php

简单的 explode() php 方法无法正确做到这一点。