我的代码 -
$input = "this text is for highlighting a text if it exists in a string. Let us check if it works or not";
$pattern ="/if/";
$replacement= "H1Fontbracket"."if"."H1BracketClose";
echo preg_replace($pattern, $replacement, $input);
现在的问题是,当我运行此代码时,它会分成多行,我还需要做什么才能让我能够在一行中获取
答案 0 :(得分:0)
使用str_replace
而不是preg_replace
。 preg_replace
将返回一个字符串数组,而str_replace
将只返回字符串:
echo str_replace($pattern, $replacement, $input);
答案 1 :(得分:-1)
试试这个
$input = "this text is for highlighting a text if
it exists in a string. Let us check if it works or not";
$pattern="if";
$replacement="<h1>". $pattern. "</h1>";
$input= str_replace($pattern,$replacement,$input);
echo "$input";
答案 2 :(得分:-1)
多条线是什么意思?当然,如果将if
包装在标头标签中,它将在网页上显示为多行。标题是块元素。更重要的是,标题是标题。不是为了突出显示文字。
如果您想使用HTML突出显示某些内容,您应该使用span
一个类,或者您可以使用HTML5元素mark
:
$input = "this text is for highlighting a text if it exists in an iffy string.";
echo preg_replace('/\\bif\\b/', '<span class="highlighted">$0</span>', $input);
echo preg_replace('/\\bif\\b/', '<mark>$0</mark>', $input);
\\b
仅匹配if
个字词,而不仅仅是if
个字母,这些字母可能是不同字词的一部分。然后在CSS中,您可以决定标记的单词应该如何显示:
.highlighted { background: yellow }
mark { background: yellow }
或者其他什么。如果你打算制作网页,我建议你阅读一下HTML和CSS的工作原理:)
答案 3 :(得分:-2)
function highlight($str,$search){
$patterns = array('/\//', '/\^/', '/\./', '/\$/', '/\|/',
'/\(/', '/\)/', '/\[/', '/\]/', '/\*/', '/\+/',
'/\?/', '/\{/', '/\}/', '/\,/');
$replace = array('\/', '\^', '\.', '\$', '\|', '\(', '\)',
'\[', '\]', '\*', '\+', '\?', '\{', '\}', '\,');
$search = preg_replace($patterns, $replace, $search);
$search = str_replace(" ","|",$search);
return @preg_replace("/(^|\s)($search)/i",'${1}<span class=highlight>${2}</span>',$str);
}