问题是这样的:我正在通过fopen
和fgets
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);
我得到的最近似的方式就是这个(适用于†
的var,但不适用于txt文件中的文本)
iconv("UTF-8", "ISO-8859-1//TRANSLIT", $full_body)
这最后一个更改了†
加上+
个字符,如果我直接使用它:
iconv("UTF-8", "ISO-8859-1//TRANSLIT", '††PuntosSent††')
我希望这里有人可以指出我正确的方向,因为我疯了这个:P
关心人
答案 0 :(得分: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-hex aproximation。
并最终将HEX字符串再次转换为人类可红色字符串
$ line = $ this-&gt; 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;
}
它花了我一点性能......是的,但似乎没有其他工作:(