在preg_replace用法上拆分行

时间:2012-02-22 05:29:58

标签: php preg-replace

我的代码 -

$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);

现在的问题是,当我运行此代码时,它会分成多行,我还需要做什么才能让我能够在一行中获取

4 个答案:

答案 0 :(得分:0)

使用str_replace而不是preg_replacepreg_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);
}