Php 替换自定义标记字符串中的特定字符
您好,问题是:我正在通过Php 替换自定义标记字符串中的特定字符,php,preg-replace,special-characters,str-replace,Php,Preg Replace,Special Characters,Str Replace,您好,问题是:我正在通过fopen和fgetsPHP函数读取两个服务器生成的文件(txt)来组合pdf,在某些情况下,源文件(txt)具有一些特殊的标记,用于调用另一个文件并将其内容插入标记位置,标记示例: ††PuntosSent†† 我尝试了几种方法,但由于†字符,我无法获取标签。我尝试了以下方法,但似乎没有一种方法能有效地替换标记或将字符更改为“可读的” 更改其他字符(也可尝试使用\†) 我得到这个的最接近的方法是使用这个(适用于带有†的var,但不适用于来自txt文件的文本) 最后一个
fopen
和fgets
PHP函数读取两个服务器生成的文件(txt)来组合pdf,在某些情况下,源文件(txt)具有一些特殊的标记,用于调用另一个文件并将其内容插入标记位置,标记示例:
††PuntosSent††
我尝试了几种方法,但由于†
字符,我无法获取标签。我尝试了以下方法,但似乎没有一种方法能有效地替换标记或将字符更改为“可读的”
更改其他字符(也可尝试使用\†
)
我得到这个的最接近的方法是使用这个(适用于带有†
的var,但不适用于来自txt文件的文本)
最后一个更改了†
字符的+
,如果我直接这样使用它:
iconv("UTF-8", "ISO-8859-1//TRANSLIT", '††PuntosSent††')
我希望这里有人能给我指出正确的方向,因为我越来越疯狂了
向人们致意最后:)唯一有效的方法是将我从文本文件中读取的每一行更改为其十六进制等价物,搜索十六进制模式,并将其替换为“可读模式”
我在这里的某个地方找到了这个
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);
}
注意:即使是C286
hex值也不是我想要的实际字符,但我相信是他的utf8十六进制近似值
最后再次将十六进制字符串转换为可编辑字符串
$line=$this->hex\u to\u字符串($hex\u line)
私有函数十六进制到字符串($hex){
$string='';
对于($i=0;$i
这让我付出了一点代价……是的,但似乎没有其他任何效果:(请看这里的第一个答案:我已经尝试过这种方法,但没有运气:谢谢
iconv("UTF-8", "ISO-8859-1//TRANSLIT", $full_body)
iconv("UTF-8", "ISO-8859-1//TRANSLIT", '††PuntosSent††')
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));
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;
}