php 如果前面有特定的子字符串,则按空格拆分

cwxwcias  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(104)
$text = "This is /n my text /n wow";

$quotes = explode('/n',$text);

这将把字符串拆分为“This is”“My text”“wow”
但我希望它保持字符串“/n”不变,而不是将其切断,输出应该像这样:
“这是/n”“我的短信/n”“哇”

i7uq4tfw

i7uq4tfw1#

将字符串分解为一个数组,然后将分隔符附加到结果数组的每个元素上。

$sep    = "/n";
$text   = "This is /n my text /n wow";
$quotes = explode($sep,$text);
$quotes = array_map(function($val) use ($sep) {
     return $val . $sep;
}, $quotes);
$last_key = count($quotes)-1;
$quotes[$last_key] = rtrim($quotes[$last_key], $sep);

(也可能需要trim($val))。

yzuktlbb

yzuktlbb2#

你有没有考虑过使用preg_split()函数。根据文件:
preg_split -通过正则表达式拆分字符串
使用此函数,应用一个正向后查找,匹配前面/n字符串后面的空格。

$quotes= preg_split("/(?<=\/n) /", $text);

您可以在上面的语句之后执行print_r($quotes);来测试这是否是所需的功能。print_r函数的输出如下所示:

Array ( [0] => This is /n [1] => my text /n [2] => wow )

您可能需要在值上使用trim()来清除前导和尾随空格,但总体而言,它似乎可以完成您所要求的任务。

DEMO:

如果你想测试这个功能,尝试复制下面的代码块并将其粘贴到http://phpfiddle.org上的CodeSpace窗口中。

<?php
$text = "This is /n my text /n wow";
$values = preg_split("/(?<=\/n) /", $text);
print_r($values);
?>

选择Run - F9选项查看输出。我为复制和粘贴演示示例道歉。我不知道如何像其他一些小提琴程序一样创建一个专用的URL。

9fkzdhlc

9fkzdhlc3#

如果你只有一个可能的分隔符,那么你可以简单地将它附加到explode返回的标记上。但是,如果你问这个问题,例如。因为您有多个可能的分隔符,并且需要知道哪一个分隔符分隔两个标记,所以preg_split可能适合您。例如,对于分离器','';'

$matches = preg_match('/(,|;)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE);

相关问题