Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 我如何过滤此行;XX<;i>\r</i>&书信电报;i>\n</i>&引用;到XX?_Php_Filter_Replace_Filtering_Preg Replace - Fatal编程技术网

Php 我如何过滤此行;XX<;i>\r</i>&书信电报;i>\n</i>&引用;到XX?

Php 我如何过滤此行;XX<;i>\r</i>&书信电报;i>\n</i>&引用;到XX?,php,filter,replace,filtering,preg-replace,Php,Filter,Replace,Filtering,Preg Replace,问题在标题中。我尝试了strip_标记,但结果显示为空,我尝试使用preg_replace,但显然我不太理解语法 $test = "Home<i>\r</i><i>\n</i>"; $patterns = array(); $patterns[0] = '<i>'; $test = preg_replace($patterns, '', $test); 试过这个 $test = "Home<i>

问题在标题中。我尝试了strip_标记,但结果显示为空,我尝试使用preg_replace,但显然我不太理解语法

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
试过这个

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
$test=“Home\r\n”;
$patterns=array();
$patterns[0]='';
$test=preg_replace($patterns,,$test);
但是echo$测试仍然是一样的

将返回XX\r\n,因此可能是您正在寻找的,假设它实际上可以做您想做的事情。我不知道它是否会像你想要的那样剥离标签,但是如果你不理解语法,请仔细阅读

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
希望这有帮助。

将返回XX\r\n,因此可能是您正在寻找的,假设它确实可以做您想做的事情。我不知道它是否会像你想要的那样剥离标签,但是如果你不理解语法,请仔细阅读

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);

希望这能有所帮助。

如果您只想将字符串的第一部分放到第一个标记上,那么下面的内容如何:

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
$test = "Home<i>\r</i><i>\n</i>";
preg_match('/^[^<]+/', $test, $match);
echo $match[0];
$test=“Home\r\n”;
预匹配(“/^[^/”,“$测试);
回声试验;

如果您只想将字符串的第一部分添加到第一个标记,那么类似以下内容如何:

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
$test = "Home<i>\r</i><i>\n</i>";
preg_match('/^[^<]+/', $test, $match);
echo $match[0];
$test=“Home\r\n”;
预匹配(“/^[^/”,“$测试);
回声试验;

preg_replace()语法的问题在于,您没有将模式定义为精确的正则表达式。如果使用str_replace(),您的方法可以工作,但对于preg_replace()),识别
的正确模式是
'/'
。基本上,您需要将其包含在
/
字符中,以将其定义为正则表达式

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
如果您希望删除所有标记,Jonathan的表达式比逐个模式实现要好得多。如果不希望,您可以像下面这样处理特定标记:

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
$test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '/<\/?i>/'; //removes <i> and </i>
$patterns[1] = '/\r|\n/'; //removes \r and \n
$test = preg_replace($patterns, '', $test);
$test=“Home\r\n”;
$patterns=array();
$patterns[0]='//';//删除和
$patterns[1]='/\r |\n/'//删除\r和\n
$test=preg_replace($patterns,,$test);

preg_replace()语法的问题在于,您没有将模式定义为精确的正则表达式。如果使用str_replace(),您的方法可以工作,但对于preg_replace()),识别
的正确模式是
'/'
。基本上,您需要将其包含在
/
字符中,以将其定义为正则表达式

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
如果您希望删除所有标记,Jonathan的表达式比逐个模式实现要好得多。如果不希望,您可以像下面这样处理特定标记:

    $test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '<i>';
$test = preg_replace($patterns, '', $test);
$test = "Home<i>\r</i><i>\n</i>";       
$patterns = array();
$patterns[0] = '/<\/?i>/'; //removes <i> and </i>
$patterns[1] = '/\r|\n/'; //removes \r and \n
$test = preg_replace($patterns, '', $test);
$test=“Home\r\n”;
$patterns=array();
$patterns[0]='//';//删除和
$patterns[1]='/\r |\n/'//删除\r和\n
$test=preg_replace($patterns,,$test);

它总是前两个字符吗?没有斜体标记,没有换行符吗?不是前两个字符,不同的单词。它总是前两个字符吗?没有斜体标记,没有换行符吗?不是前两个字符,不同的单词。我自己喜欢preg_match一个,特别是如果你知道原始问题中的XX是什么的话。我喜欢preg_我自己匹配一个,特别是如果你知道原始问题中的XX是什么。模式不正确。第一个[0]应该是
'/'
,第二个[1]应该是
'/\r |\n/'
。可能只是在第二个上删除斜杠或其他东西。但它显示的方式显示您转义了方括号,您可能想到的是一个组的括号,而不是大括号(r | n)chars。此外,如果你正在做的唯一事情是一个或多个事情,你甚至不需要分组。分组只有在你将该组与其他对象(如
“/”
)进行比较时才真正有用。你完全正确。我想我昨晚在浏览问题和睡觉之间做出了错误的选择。a相应地调整了模式。模式不正确。第一个[0]应为
'/'
,第二个[1]应该是
'/\r |\n/'
。可能只是在第二个上删除斜杠或其他东西。但它显示的方式显示您转义了方括号,您可能想到的是一个组的括号,而不是大括号(r | n)chars。此外,如果你正在做的唯一事情是一个或多个事情,你甚至不需要分组。分组只有在你将该组与其他对象(如
“/”
)进行比较时才真正有用。你完全正确。我想我昨晚在浏览问题和睡觉之间做出了错误的选择。a相应地调整了图案。