preg_replace():编译失败:在偏移量0处无重复

时间:2019-07-19 12:54:19

标签: php regex preg-replace

下午好

使用服务器从PHP 5传递到PHP 7,并且在调整所有内容时遇到很多问题。

今天,我无法将“-”更改为“”。 我错过了此错误,:

  

警告:在第96行的/home/glassmad/public_html/agente/clientes.php中使用未定义的常量cliente-假定为“ cliente”(这会在PHP的未来版本中引发错误)

     

警告:preg_replace():编译失败:在第96行的/home/glassmad/public_html/agente/clientes.php中偏移0处没有重复的内容

php代码是这样的:

         echo "    
<tr>
    <th>&nbsp;&nbsp;". preg_replace('~?~',' ',$row[cliente]) ."</th>
<th></br>&nbsp;&nbsp; <img src='https://barcode.tec-it.com/barcode.ashx?data=" . $row["cliente"]. "&code=Code39&multiplebarcodes=false&translate-esc=false&unit=Fit&dpi=96&imagetype=Gif&rotation=0&color=%23000000&bgcolor=%23ffffff&qunit=Mm&quiet=0' alt='Barcode Generator TEC-IT'/></th>

</form></th>
      </tr>";

谢谢

2 个答案:

答案 0 :(得分:3)

错误

  

警告:preg_replace():编译失败:在第96行的/home/glassmad/public_html/agente/clientes.php中偏移0处没有重复的内容

是因为?是一个量词。它允许前一个字符/组是可选的(零个或一个)。您没有分组/字符,因此无法量化。

如果要替换文字问号,则需要对字符进行转义。

preg_replace('~\?~',' ',$row[cliente])

或使用字符类。

preg_replace('~[?]~',' ',$row[cliente])

这并不是一个很好的正则表达式用法。一个str_replace就足够了

str_replace('?',' ',$row[cliente])

或者,因为您的var是$row,所以我认为这是来自SQL。您可以执行以下操作:

replace(cliente, '?', '')
在您的SQL中也是如此。

答案 1 :(得分:2)

尝试一下。

        echo "    
<tr>
    <th>&nbsp;&nbsp;". preg_replace('?',' ',$row['cliente']) ."</th>
<th></br>&nbsp;&nbsp; <img src='https://barcode.tec-it.com/barcode.ashx?data=" . $row["cliente"]. "&code=Code39&multiplebarcodes=false&translate-esc=false&unit=Fit&dpi=96&imagetype=Gif&rotation=0&color=%23000000&bgcolor=%23ffffff&qunit=Mm&quiet=0' alt='Barcode Generator TEC-IT'/></th>

</form></th>
      </tr>";