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

时间:2017-11-05 08:14:27

标签: php regex

我有这个字符串:

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

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

To do list:
- Buy milk
- Feed cat

我正在考虑创建一个reg表达式,用于检查字符串是否包含:-个字符,然后在每个匹配项中添加<br>标记。参数...

5 个答案:

答案 0 :(得分:1)

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

\s*(-\s*) 

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

现场演示here

使用preg_replace的PHP中的示例代码:

$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 milk\n- Feed cat

答案 1 :(得分:1)

试试这个:

$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 :(得分:0)

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

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

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

答案 3 :(得分:0)

这可以简单地使用没有正则表达式的爆炸功能来完成。这里是如何

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

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

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

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

now task是一个数组,每个元素都包含待办事项列表。

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

答案 4 :(得分:0)

您只需使用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