2014-03-28 119 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; 
} 

花了我一點點的性能......是的,但是沒有別的似乎工作:(