将 HTML 编码文本与 PHP 中的纯文本进行比较

Compare HTML encoded text to plain text in PHP

我有两个相同的字符串,但一个有 HTML 个实体,另一个是它的等效字符:

$s1 = "‘Dragon’";
$s2 = "'Dragon'";

有什么方法可以检测到两个字符串相同吗?我知道这里不能用strcmp,PHP也没有mb_比较功能。这是我所做的,但它不起作用:

$coll = collator_create( 'en_US' );
$res  = collator_compare( $coll, html_entity_decode($s1), $s2 );

if ($res === false) {
    echo collator_get_error_message( $coll );
} else if( $res > 0 ) {
    echo "s1 is greater than s2\n";
} else if( $res < 0 ) {
    echo "s1 is less than s2\n";
} else {
    echo "s1 is equal to s2\n";
}

@saurabh,在您的情况下,您正在处理 left single quote 特殊字符。您可以使用 html_entity_decode 方法将其转换为它的字符:

$s1 = html_entity_decode($s1) // ‘Dragon’

现在您可以像往常一样比较字符串:$s1 == $s2

但是由于您的 $s2 没有 left single quoteapostrophe,您的检查将 return 为假。所以确保字符相同。

$s1 = html_entity_decode("&lsquo;Dragon&rsquo;"); // ‘Dragon’
$s2 = "'Dragon'"; // 'Dragon'

// false because ‘ is not the same as '
return $s1 == $s2; // false