将 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 quote
而 apostrophe
,您的检查将 return 为假。所以确保字符相同。
$s1 = html_entity_decode("‘Dragon’"); // ‘Dragon’
$s2 = "'Dragon'"; // 'Dragon'
// false because ‘ is not the same as '
return $s1 == $s2; // false
我有两个相同的字符串,但一个有 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 quote
而 apostrophe
,您的检查将 return 为假。所以确保字符相同。
$s1 = html_entity_decode("‘Dragon’"); // ‘Dragon’
$s2 = "'Dragon'"; // 'Dragon'
// false because ‘ is not the same as '
return $s1 == $s2; // false