使用php更改html中的文本而不影响html标签

时间:2017-07-07 14:01:49

标签: php

我编辑了一个简单的php函数,将字母转换为具有相似外观的同形异义词。

我的代码:

function homographit($string){

$alphabet = array("A", "B", "C", "E", "H", "J", "K", "M", "N", "O", "P", "S", "T", "X", "Y", 
"a", "b", "c", "e", "i", "j", "k", "o", "p", "r", "s", "v", "x", "y");
$Greec   = array("\u0391", "\u0392", "\u0421", "\u0395", "\u0397", "\u0408", "\u039A", "\u039C", "\u039D", "\u039F", "\u03A1", "\u0405", 
"\u03A4", "\u03A7", "\u03A5", "\u0430", "\u042C", "\u0441", "\u0435", "\u0456", "\u0458", "\u03BA", "\u03BF", "\u03C1", "\u0433", "\u0455", 
"\u03BD", "\u03C7", "\u0443");

$newstring = str_replace($alphabet, $Greec, $string);
return json_decode('"'.$newstring.'"', true);
}

对于文本字符串,该函数完美无缺。

我的问题:

如何将此homgraphit()应用于html字符串中的所有文本withouwt影响html TAGS? THX

2 个答案:

答案 0 :(得分:0)

您可以使用strip_tags内置的php函数来从字符串中删除HTML和PHP标记。我使用你的homographit函数测试了代码:

$x = '<span>\u0391</span><b>\u0392</b>';
$x = strip_tags($x);
var_dump(homographit($x));die();

//will print
//string(4) "ΑΒ"

$x = '<span>\u0391</span><b>\u0392</b>';
var_dump(homographit($x));die();

//will print
//string(32) "<ѕρаn>Α</ѕρаn><Ь>Β</Ь>"

希望这可以解决您的问题。

编辑 我发现了这个

$x = '<span>\u0455\u0391</span><b>\u0392</b>';
$convertedString = json_decode('"' . $x . '"');
var_dump($convertedString);

// will print
// string(26) "<span>ѕΑ</span><b>Β</b>"

试试这个

答案 1 :(得分:0)

我用

解决了我的问题
preg_replace_callback()