我有这个字符串:
$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 方法无法正确做到这一点。