我有一个很长的文字,我有5个单词。
我希望能够解析文本并突出显示5种不同风格的5个单词。
我正在使用php和js / jquery。
实现这一目标的最佳做法是什么?
足够str_replace('word','<span style1 >word</span>', $text)?
注意: 什么时候这个词是大写还是大写?
答案 0 :(得分:2)
echo preg_replace_callback(array_map(function($word){
return "/\b{$word}\b/i";
}, array('word', 'onion')), function($matches){
return "<em>{$matches[0]}</em>";
}, 'word woRd onions onion abc');
// outputs <em>word</em> <em>woRd</em> onions <em>onion</em> abc
答案 1 :(得分:1)
例如,如果你想加粗单词。
<?php
$words = array('word1', 'word2', 'word3');
$replacement = array();
foreach($words as $word){
$replacement[] = "<strong>" . $word . "</strong>";
}
$new_str = str_replace($words, $replacement, "I really like word1 and word2 and word3");
echo $new_str;
// prints I really like <strong>word1</strong> and <strong>word2</strong> and <strong>word3</strong>
?>
答案 2 :(得分:0)
避免使用JavaScript,因为并非所有浏览器都支持JavaScript,而有些则关闭JS。 如果您有PHP,那么您处于“理想”状态:使用它。
如果您使用str_replace
,则可以替换文本节点之外的字词:
<p id="word"> ... </p>
这可能有问题。
考虑使用HTML DOM库:http://simplehtmldom.sourceforge.net/#fragment-12 他们说,Simple HTML DOM就像服务器端的jQuery。
答案 3 :(得分:0)
str_replace也会匹配word1abc和MNword1因此你应该使用preg_replace函数和word boundry:
<?php
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/\bword1\b/';
$patterns[1] = '/\bword2\b/';
$patterns[2] = '/\bword3\b/';
$patterns[3] = '/\bword4\b/';
$patterns[4] = '/\bword5\b/';
$replacements = array();
$replacements[0] = '<span style1>word1</span>';
$replacements[1] = '<span style2>word2</span>';
$replacements[2] = '<span style3>word3</span>';
$replacements[3] = '<span style4>word4</span>';
$replacements[4] = '<span style5>word5</span>';
echo preg_replace($patterns, $replacements, $string);
?>
有关此功能的更多详情,请访问preg-replace manual