我从Mssql数据库中读取了以下文本:
- Kühlwassers的Leitwert und Korrosionsschutz实验室:111-Umrichterkühlkreis<200µS / cm 111-Ofenkühlkreis和IGBT-Anlagen:<400µS / cm 111- Konzentration des Korrosionsschutzes
我想使用此替换功能用新行("<br>"
替换“ 111”:
str_replace("111", "<br>", $text);
或这个
array_replace("111", "<br>", $text);
当我仅在代码中声明文本时,这两行都起作用,但是如果我从数据库中读取它,则行不通。从db读取此文本后,我使用utf8_encode
。
我认为问题在于数据类型在数据库表中定义为“文本”。
答案 0 :(得分:1)
您可以使用preg_replace()功能。
$string = 'Leitwert und Korrosionsschutz des Kühlwassers überprüfen: 111- Umrichterkühlkreis < 200µS/cm 111- Ofenkühlkreis und IGBT-Anlagen: < 400µS/cm 111- Konzentration des Korrosionsschutzes';
$string = preg_replace('/111/', '<br>', $string);
echo $string;
这将输出:
Leitwert und Korrosionsschutz des Kühlwassers überprüfen:
- Umrichterkühlkreis < 200µS/cm
- Ofenkühlkreis und IGBT-Anlagen: < 400µS/cm
- Konzentration des Korrosionsschutzes
答案 1 :(得分:0)
utf8_encode()是一个名称不正确的函数,经常被使用而对其实际用途一无所知。如果您使用SQL Server,则极不可能从数据库中获取ISO-8859-1字符串,原因是:
Microsoft的RDBM本机同时使用两种编码,一种是Unicode兼容的编码(如果是NTEXT
列类型,另一种是ANSI(如果是TEXT
列类型)。 “ ANSI”只是“运行服务器的计算机中Windows默认代码页”的通用术语,可以类似于Windows-1252,但不能类似于ISO-8859-1。
PHP数据库扩展通常将数据库字符串从应用程序编码转换为应用程序编码,并且它们是透明进行的(如果正确设置连接设置,它们也会正确执行 )。
< / li>因此很有可能是您遇到问题的根源。
最后但并非最不重要的一点,str_replace()是一个不支持多字节的旧功能。不幸的是,它没有多字节等效项,但您可以在那里找到alternatives。