所以我想要做的是打印出数组中的所有字符串,但用<p>
标记分隔它们。
我试过了:
echo filter_var( implode( "<p>", $matches[0]), FILTER_SANITIZE_SPECIAL_CHARS); echo "</p>";
但结果是
string1</p>string2</p>string3</p>
而不是
<p>string1</p> <p>string2</p> <p>string3</p>
有什么想法吗?
编辑:
如果您需要实际的完整代码,请转到:
<?php
$file = 'logfile.log';
$searchfor = $_POST['name'];
$contents = file_get_contents($file);
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$pattern.*\$/m";
if(preg_match_all($pattern, $contents, $matches)){
echo "Found matches:\n";
echo filter_var( implode( "<p>", $matches[0]), FILTER_SANITIZE_SPECIAL_CHARS);
}
echo "</p>";
else{
echo "No matches found";
}
?>
答案 0 :(得分:0)
您应该将htmlspecialchars()
用于要在页面上安全显示的任意字符串,而不是filter_var()
。
这是完整的解决方案:
foreach ($matches[0] as $str) {
echo '<p>'.htmlspecialchars($str).'</p>';
}
或者,如果你真的想要一个(丑陋的)单线:
echo implode('', array_map(function ($str) { return '<p>'.htmlspecialchars($str).'</p>'; }, $matches[0]));