2017-07-07 101 views
0

我编辑了一个简单的php函数,将字母转换为具有类似外观的同形异义文字。在不影响html标签的情况下在html中更改文本

我的代码:

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标签? thx

+0

<'字符和'>' - 也范围('A','Z')将得到一个字母比输入全部更快 – ThisGuyHasTwoThumbs

+0

谢谢你freind。任何想法做到这一点我想只改变我的功能中引用的字母不是所有的字母表 –

+0

不用担心:) wimm.n的回答看起来不错(我没有测试过,但我相信他/她的话):)别担心,我没有看到它只有几个字母,不是全部:) – ThisGuyHasTwoThumbs

回答

0

我已经通过使用正则表达式'解决了我probblem与

preg_replace_callback() 
0

您可以使用strip_tags内置PHP函数来处理来自字符串的HTML 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>" 

试试这个

+0

谢谢你wi-mm-n;我已经测试了strip_tags和回音homographit($ html).i wnat改变html中的文本,而不会影响例如

+0

哦,所以你想输出像 AB,如果你喜欢你只是将所有的html字符串传递给你的函数,而不是像这样输出。我只是编辑上面的示例。 – WilsonNG

+0

寻找这个标签:<Ь>它的影响它的变化与我的fucntionsoso这一个<ѕρаn>:p跨度更改为greec字符 –

相关问题