Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从输入字符串返回html的函数_Php - Fatal编程技术网

Php 从输入字符串返回html的函数

Php 从输入字符串返回html的函数,php,Php,使用以下规则定义将字符串转换为有效html的函数: \u C必须替换为 **Hello World**必须替换为Hello World \uuuu Hello World\uuuuu必须替换为Hello World 我的尝试 $str = "Hi my name is __Matteo__and, _C I'm **Italian**"; function replaceString($str){ $newStr = str_replace("__", " <strong&

使用以下规则定义将字符串转换为有效html的函数:

  • \u C
    必须替换为

  • **Hello World**
    必须替换为
    Hello World
  • \uuuu Hello World\uuuuu
    必须替换为
    Hello World
我的尝试

$str = "Hi my name is __Matteo__and, _C I'm **Italian**";

function replaceString($str){

    $newStr = str_replace("__", " <strong> ", $str);
    $newStr = str_replace("**", "<i>", $newStr);
    $newStr = str_replace("_C", "<br/>", $newStr);

    return "<p>" . $newStr . "<p/>";
}
$str=“你好,我的名字是马特奥,我是**意大利人**”;
函数replaceString($str){
$newStr=str\u replace(“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
$newStr=str_replace(“**”,”,$newStr);
$newStr=str_replace(“_C”,”
,$newStr); 返回“”$newStr.“

”; }

我不知道如何关闭标签


有什么帮助吗?

如果这是我的任务,我会使用非正则表达式str\u替换
\u C
。然后对带有开始/结束标记的部分使用正则表达式

代码:(演示:)

$str=“你好,我的名字是马特奥,我是**意大利人**”;
函数replaceString($str){
$str=str\u替换(“\u C”,“
”,“$str”); $str=preg\u replace(['~\\+)\\\*([^*]+)\*\*\*.],['$1','$1'],$str); 返回“”$str.“

”; } 回显替换字符串($str);

输出:

<p>Hi my name is <strong>Matteo</strong>and, <br/> I'm <i>Italian</i><p/>
你好,我的名字是马特奥,
我是意大利人


我的正则表达式模式使用否定字符类,因为它们允许正则表达式引擎以更高的效率移动。捕获组允许您隔离已包装的子字符串,并在替换中应用新包装。

这是家庭作业吗?如果你环顾四周,你可以找到一个解析器。你能正确格式化需求吗?也许你想看看正则表达式?在
C
之前有多少下划线?和。(停止删除我的评论,没有问题)@Script47 Editor已经更改了OP。不知道你可以使用带有preg\u replace的数组,整洁。你确定
\uuu.*?\ u\ u
不会更快吗?请访问regex101。当您要求正则表达式引擎贪婪地匹配时,它可以“移动得更快”。当你让量词变懒的时候,你就失去了效率。该死,你是对的,你的rex肯定快多了
<p>Hi my name is <strong>Matteo</strong>and, <br/> I'm <i>Italian</i><p/>