2014-03-28 73 views
0

嗨,问题是这样的:我正在通过fopenfgets PHP函数读取几个服务器生成的文件(txt)来伪造pdf,在某些情况下,源文件( TXT)的呼叫另一个文件的一些特殊代码,并插入其在标签位置的内容,标记示例:替换自定义标记字符串中的特定特殊字符

††PuntosSent†† 

我试过几种方法,我不能够得到,因为字符的标签。我试着通过以下方式与他们都不到更换标记工作或改变系统字符为“读取一个”

str_replace ($this->doc_p_sent = my custom text value) 

$full_body = str_replace('††PuntosSent††', $this->doc_p_sent, $full_body); 

变更为别的(也试图与\†)字符

$full_body = str_replace('†', '*', $full_body); 

最aproximate方式,我得到这个是用这个(适用于一个VAR与而不是从TXT文件中的文本)

iconv("UTF-8", "ISO-8859-1//TRANSLIT", $full_body) 

这最后Ø NE改变字符为+加号,如果我直接用这样的:

iconv("UTF-8", "ISO-8859-1//TRANSLIT", '††PuntosSent††') 

我希望这里有人能指出我在正确的方向,因为即时得到疯狂问心无愧此:P

问候人

+0

在这里看到的第一个答案: http://stackoverflow.com/questions/ 10152894/php-replacement-special-characters-like-aaee – r3wt

+0

我已经试过这种方式,并没有运气:S谢谢 – Strife86

回答

0

最后:)这个作品正在改变每一行我从它的hex等值的文本文件阅读和搜索HEX模式,取而代之的是“可读一个”

,我发现这个问题的唯一办法这里的地方

private function string_to_hex($string){ 
    $hex = ''; 
    for ($i=0; $i<strlen($string); $i++){ 
     $ord = ord($string[$i]); 
     $hexCode = dechex($ord); 
     $hex .= substr('0'.$hexCode, -2); 
    } 
    return strToUpper($hex); 
} 

,然后替换十六进制模式

$line = utf8_encode($line); 
$hex_line = str_replace('C286C286', '2B2B', $this->string_to_hex($line)); 

注:连C286十六进制值是不实际的系统字符我一直在寻找热塑成型的,但我相信的是他的UTF8,十六进制aproximation。

最后将HEX字符串转换为人类redable串再次

$线= $这 - > hex_to_string($ hex_line);

private function hex_to_string($hex){ 
    $string=''; 
    for ($i=0; $i < strlen($hex)-1; $i+=2){ 
     $string .= chr(hexdec($hex[$i].$hex[$i+1])); 
    } 
    return $string; 
} 

花了我一点点的性能......是的,但是没有别的似乎工作:(