使用PHP操作混乱的输入字符串并将其转换为自定义输出

使用PHP操作混乱的输入字符串并将其转换为自定义输出,php,regex,Php,Regex,我需要你的帮助。我有许多类型的字符串输入要在另一个窗体上操作。当然,这将是许多字符串输入样式(混乱),甚至从第三方软件复制粘贴到我的CKeditor编辑器中 下面是我的代码,用于操作输入字符串以更改为另一种形式。在我的例子中,每个单词的输出将在标记中 function generate_answer_span($str="") { $arr_words = preg_split('/ +/', $str); $arr_str = []; echo '<pre>

我需要你的帮助。我有许多类型的字符串输入要在另一个窗体上操作。当然,这将是许多字符串输入样式(混乱),甚至从第三方软件复制粘贴到我的CKeditor编辑器中

下面是我的代码,用于操作输入字符串以更改为另一种形式。在我的例子中,每个单词的输出将在
标记中

function generate_answer_span($str="")
{
    $arr_words = preg_split('/ +/', $str);
    $arr_str = [];
    echo '<pre>';
    print_r($arr_words);
    echo '</pre>';
    foreach($arr_words as $word)
    {
        $word = strip_tags($word);
        $arr_str[] = "<span style='    background: #ffffbf;
    border: 1px solid #cecece;'>".$word."</span>";
    }

    return implode(" ",$arr_str);
}

$input_string = "<p>Berdasarkan gambarajah di bawah,nyatakan pecahan tersebut.<br />2/5</p><p> </p>";
echo generate_answer_span($input_string);
函数生成答案span($str=”“)
{
$arr_words=preg_split('/+/',$str);
$arr_str=[];
回声';
打印($arr_words);
回声';
foreach($arr_words作为$word)
{
$word=带标签($word);
$arr_str[]=“.$word.”;
}
返回内爆(“,$arr_str”);
}
$input_string=“Berdasarkan gambarajah di bawah,nyatakan pecahan tersebut.
2/5

”; echo生成应答范围($input\u string);

现在,正如你在红色圆圈上看到的,奇怪的事情出现了。“非常糟糕……”

如何筛选所有输入字符串?我的预期结果是,我想重置字符串,就像字符串输出来自
粘贴到记事本
,然后就可以了

有人能帮我吗

谢谢!

试试这个功能:

函数生成答案span($str=”“)
{
$words=preg_replace(“#]+>”,“$str);
//$arr_words=preg_split('/+/',trim($words));
$arr_words=preg_split('/\s+/',trim($words));
foreach($arr_words作为$word)
{
$word=带标签($word);
$arr_str[]=“.$word.”;
}
返回内爆(“,$arr_str”);
}

首先用空格替换标记,然后按空格拆分单词。

使用
preg_split('/]+>(*SKIP)(*F)|\s+/',$str)
“tersebut.2/5”组合在一起。我希望是分开的。谢谢;)好吧,试试(它也会在(连续的)标签上拆分)。无需使用
$word=strip\u标签($word)然后。哇,输出太好了…你能解释一下你做了什么吗?好吧,就像我说的,首先我用空格替换标签,然后用空格分割单词。我刚刚编辑了答案,以允许在输入字符串之间也有新行。如果答案对你有用,你能接受吗?好主意!我需要首先在我的代码中实现它。稍后我会给出反馈,因为会有很多输入类型。;)干杯
function generate_answer_span($str="")
{
    $words = preg_replace('#<[^>]+>#', ' ', $str);
    //$arr_words = preg_split('/ +/', trim($words));
    $arr_words = preg_split('/\s+/', trim($words));

    foreach($arr_words as $word)
    {
        $word = strip_tags($word);
        $arr_str[] = "<span style='background: #ffffbf; border: 1px solid #cecece;'>".$word."</span>";
    }

    return implode(" ",$arr_str);
}