当我尝试
时 $stg = preg_replace("/<PREPNAME>.*<\/PREP_ZIP>/s","",$stg);
它正常工作,它取代了该函数中写入的文本。我得到$stg
被剥夺,我得到剩下的字符串。
但是当我尝试使用"\n"
时,它会清空整个字符串。
$stg = preg_replace("/<PREPNAME>.*<\/PREP_ZIP>\n/s","",$stg);
我在第二种情况下让$stg
为空。
请帮忙。我失踪的地方?
示例字符串: -
这不是XML字符串。这只是存储在数据库中的blob数据。虽然取这个只是一个字符串。
<T2_NASD_LAST_NAME1>ASDSADSA</T2_NASD_LAST_NAME1>\r\n
<T2_NASD_FIRST_NAME1>SADASD</T2_NASD_FIRST_NAME1>\r\n
<T2_SOC1>012345678</T2_SOC1>\r\n
<T2_DOBM1>02</T2_DOBM1>\r\n <T2_DOBD1>02</T2_DOBD1>\r\n
<T2_DOBY1>1984</T2_DOBY1>\r\n
<T2_NASD_LAST_NAME>ASDSADSA</T2_NASD_LAST_NAME>\r\n
<T2_NASD_FIRST_NAME>SADASD
</T2_NASD_FIRST_NAME>\r\n
<T2_NASD_MIDDLE_NAME>ASDA</T2_NASD_MIDDLE_NAME>\r\n
<T2_SOC>012345678</T2_SOC>\r\n<T2_ADR_ADRN>SADSADAS</T2_ADR_ADRN>\r\n
<T2_ADR_ADRA>DASD</T2_ADR_ADRA>\r\n<T2_ADR_ADRC>ASDSADSA</T2_ADR_ADRC>\r\n
<T2_ADR_ADRS>MI</T2_ADR_ADRS>\r\n<T2_ADR_ADRZ>11111</T2_ADR_ADRZ>\r\n
<T2_DOBM>02</T2_DOBM>\r\n<T2_DOBD>02</T2_DOBD>\r\n
<T2_DOBY>1984</T2_DOBY>\r\n\n\n\n\n\n\n\n<PREPFLAG>NONE</PREPFLAG>\n
<PREPNAME>AAAA</PREPNAME>\n
<PREPADDRESS>BBBB</PREPADDRESS>\n
<PREP_ZIP>1984</PREP_ZIP>
答案 0 :(得分:0)
您必须在\ n之前添加两个\并使用简单的引号
<?php
$subject = <<<'LOD'
<T2_DOBY1>1984</T2_DOBY1>\r\n
<T2_NASD_LAST_NAME>ASDSADSA</T2_NASD_LAST_NAME>\r\n
<T2_NASD_FIRST_NAME>SADASD
<PREP_ZIP>NONE</PREP_ZIP>\n
</T2_NASD_FIRST_NAME>\r\n
<T2_DOBY1>1984</T2_DOBY1>\r\n
<T2_NASD_LAST_NAME>ASDSADSA</T2_NASD_LAST_NAME>\r\n
<T2_NASD_FIRST_NAME>SADASD
</T2_NASD_FIRST_NAME>\r\n
LOD;
$pattern = '~<PREP_ZIP>.*?</PREP_ZIP>\\\n~s';
echo htmlspecialchars(preg_replace($pattern, "#!!!YOUHOU!!!#", $subject));;