私がやっていることは、「専門用語集」を作ることです。 基本的に私はいくつかのhtmlといくつかの用語集をデータベースに持っています。 人が専門用語のバスターをクリックすると、テキスト内の単語が意味を示す素敵なツールチップ(wztooltip)に置き換えられます。 HTML内の単語の検索と置換
は、私はこの1つのハードしようとしてきたし、この質問 Regex/DOMDocument - match and replace text not in a linkで重く見て、答えがsimple_html_domのLIBSにあるように思えるが、私はそれが動作するのに問題を抱えています。明らかに既にリンクされている単語は触れられません。 ここに私が持っているもののストリップがあります。
$html = str_get_html($article['content']);
$query_glossary = "SELECT word,glossary_term_id,info FROM glossary_terms WHERE status = 1 ORDER BY LENGTH(word) DESC";
$result_glossary = mysql_query_run($query_glossary);
while($glossary = mysql_fetch_array($result_glossary)) {
$glossary_link = SITEURL.'/glossary/term/'.string_to_url($glossary['word']).'-'.$glossary['glossary_term_id'];
if(strlen($glossary['info'])>400) {
$glossary_info = substr(strip_tags($glossary['info']),0,350).' ...<br /> <a href="'.$glossary_link.'">Read More</a>';
}
else {
$glossary_info = $glossary['info'];
}
$glossary_tip = 'href="javascript:;" onmouseout="UnTip();" class="article_jargon_highligher" onmouseover="'.tooltip_javascript('<a href="'.$glossary_link.'">'.$glossary['word'].'</a>',$glossary_info,400,1,0,1).'"';
$glossary_word = $glossary['word'];
$glossary_word = preg_quote($glossary_word,'/');
//once done we can replace the words with a nice tip
foreach ($html->find('text') as $element) {
if (!in_array($element->parent()->tag,array())) {
//problems are case aren't taken into account and grammer
$element->innertext = str_ireplace(''.$glossary['word'].' ',' <a '.$glossary_tip.' >'.$glossary['word'].'</a> ', $element->innertext);
//$element->innertext = str_ireplace(''.$glossary['word'].',',' <a '.$glossary_tip.'>'.$glossary['word'].'</a> ', $element->innertext);
//$element->innertext = preg_replace ("/\s(".$glossary_word.")\s/ise","nothing(' <a'.'$glossary_tip.'>'.'$1'.'</a> ')" , $element->innertext);
// $element->innertext = str_replace('__glossary_tip_replace__',$glossary_tip, $element->innertext);
}
}
}
$article['content'] = $html->save();
私は同僚です。実際の問題は、単語内の単語ではなく、invidiaul単語にのみ一致するコードを得るのが難しいことです(つまり、おそらくAPS)。これらの単語はHTML内にもあります。だからそれは考慮する必要がある。 – David
確かに、パワフルな正規表現を書いて、単語境界を検出するためにおそらく空白と句読点を使用するケースがありますが、私は自分自身を試して恥ずかしくないでしょう。+1 – shanethehat
両方のタグを使用したため、JSソリューションまたはPHPソリューションが必要ですか? – Gerben