Php 我如何过滤此行;XX<;i>\r</i>&书信电报;i>\n</i>&引用;到XX?
问题在标题中。我尝试了strip_标记,但结果显示为空,我尝试使用preg_replace,但显然我不太理解语法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>
$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相应地调整了图案。