【问题标题】:preg_replace different result between sql result and stringpreg_replace sql结果和字符串之间的不同结果
【发布时间】:2017-03-22 22:06:00
【问题描述】:

如果我使用简单的 preg_replace,我有一个奇怪的问题

$pattern = '/<div class="formula">(.*?)<\/div>/';
$str = preg_replace($pattern, "", $str);

不能正常工作,没有任何东西被替换......如果我把一个静态字符串而不是 $str 都正常工作。

string(2133) "Velocità: <div class="formulaTex">...</div><div class="formula">...</div>

为什么?要使用某种编码?

如果我将 var 传递给 preg_replace 不起作用,如果我传递静态字符串则它起作用!

这是我的代码:

$db = new PDO('sqlite:ARGOMENTI_NEW.sqlite');;
$result = $db->query("SELECT * FROM Testi WHERE IDSezione = 100");
while($row = $result->fetchAll(PDO::FETCH_ASSOC)){

    $pattern = '/<div class="formula">(.*?)<\/div>/';
    $str = preg_replace($pattern, "", $row[0]["Testo"]);
    echo $str . "<br/><br/><br/>";

}

谢谢

【问题讨论】:

  • 如果您不发布字符串,您希望我们如何回答?肯定有区别,问题是 what 区别。可能是一些看起来相似的 unicode 字符。
  • 需要向我们展示您的$str$pattern 中的var_dump()
  • 我用字符串和模式的 vardump 更新我的问题!
  • 为我工作:ideone.com/7M9BEe
  • 静态字符串也适用于我的代码,问题是当我尝试从 sqlite 查询中获取此字符串时...我更新了问题

标签: php mysql sqlite preg-replace


【解决方案1】:

我发现错误,来自 sql 查询标记编码的 html 实体的字符串,在屏幕上我看到正确的字符串,但真正的字符串有不同的字符....这就是问题所在!我解决了这个问题:

$str = preg_replace( "/\r|\n/", "", html_entity_decode($row[0]["Testo"]));

【讨论】:

    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多