DOMDocumentとDOMXPathを使用して、HTMLコンテンツ内のフレーズ(キーワードフレーズ)の存在を判断しています。たとえば、キーワードが太字であるかどうかを検索しています。私は次のコードを使用し、キーワードが検索されるときに一部の文字を「無視」する必要があることを除いて、正常に機能します。次のコードで:
$characters_to_ignore = array(':','(',')','/');
$keyword = 'keyword AAA';
$content = "Some HTML content for example <b>keyword: AAA</b> and other HTML";
$exp = '//b[contains(., "' . $keyword . '")]|//strong[contains(., "' . $keyword . '")]|//span[contains(@style, "bold") and contains(., "' . $keyword . '")]';
$doc = new DOMDocument();
$doc->loadHTML(strtolower($content));
$xpath = new DOMXPath($doc);
$elements = $xpath->query($exp);
「keyword:AAA」と「keywordAAA」を識別する必要があるため、キーワードフレーズを検索するときに、変数$characters_to_ignoreの文字を無視するようにDOMXPathクエリに指定する必要があります。
前のコードは「キーワードAAA」で正常に機能しますが、「キーワード:AAA」にも一致するように変更するにはどうすればよいですか?(および$ characters_to_ignore内の任意の文字を使用)
新しい情報:多分これを使用していますか?
fn:contains(string1、string2)
しかし、私は実用的な例を得ることができません。