我从XML文件导入一些文本,然后修剪它并替换多个空格。
$var = $myxmltext;
$var = trim($var);
$var = preg_replace('/\s+/',' ',$var);
出于某种原因,我得到了" raw html"当我回应它时,像这样:
quot; or IÂ’ve instead of I've
任何想法为什么?
这是我的修剪功能:
function mytrim($mytrim){
$mytrim = utf8_decode($mytrim);
$mytrim = trim($mytrim);
$rule1 = array(
",", // virgula
".", // punct
"~", // ~
"_", // underscore
"-", // liniuta
")", // paranteza inchidere
":", // doua puncte
">", // mai mare
"<", // mai mic
"!",
"?",
"*",
"&"
);
$rule2 = array(
", ", // virgula
". ", // punct
" ~ ", // ~
" ", // underscore
" - ", // liniuta
") ", // paranteza inchidere
": ", // doua puncte
" > ", // mai mare
" < ", // mai mic
"! ",
"? ",
"* ",
" & "
);
$mytrim = str_replace($rule1, $rule2, $mytrim);
$rule3 = array(
" .", // punct
" ,", // virgula
" ?", // question mark
" !",
" *",
" )"
);
$rule4 = array(
".", // punct
",", // virgula
"?", // question mark
"!",
"*",
")"
);
$mytrim = str_replace($rule3, $rule4, $mytrim);
$mytrim = preg_replace('/\s+/',' ',$mytrim);
return $mytrim;
}
答案 0 :(得分:0)
在我看来这是一个编码问题,XML文件默认使用UTF-8,在trim()和preg_replace()
之前尝试使用utf8_decode()$var = utf8_decode($myxmltext);
$var = trim($var);
$var = preg_replace('/\s+/',' ',$var);
答案 1 :(得分:0)
在你做任何事之前试试这个正则表达式:
preg_replace('/(&)\s+(\w+;)/', '$1$2', $text);
然后开展业务,让我们看看HTML现在是否编码。
所以这将通过改变所有内容来解决HTML编码的主要问题:
& quote;
为:
"e;
请注意:这可能无法完全按预期工作,所以请测试。
当然,正如其他人所说,你也可以使用utf8_decode / encode来摆脱那些umlet角色。
要解决&符问题,请尝试:
preg_replace('/&(?!\w+;)/', ' & ', $text);
所以这将取代所有&amp;不是"e;
形式的,并且在任何一方给他们一个空格。
与正常情况相同,先测试一下。