使用PHP删除单词中的数字



我有一个从API返回的字符串。由于某种原因,返回的JSON中的一个值之一是Null54,它破坏了JSON_DECODE,因此不允许我正确访问它。

示例字符串:{"ttl": null54 "card_id": "np"}.DPTQIg.eeQ-wZYaH8ptEofYGZM0E8ICZDQ

您将看到它具有null54作为ttl的值。这样可以防止以下PHP工作。如果我手动删除54,则PHP工作正常。如何删除可能与null相关的任何数字以防止PHP无法正常工作?我不能保证它永远是54。

工作php:

$string = '{"ttl": null, "card_id": "np"}.DPSXmw.VApKpbKiEnEoRgwWblgt-nuewFg';
$string = explode('}', $string);
$json = json_decode($string[0] .'}');
echo $json->card_id;

非工作php:

$string = '{"ttl": null54, "card_id": "np"}.DPSXmw.VApKpbKiEnEoRgwWblgt-nuewFg';
$string = explode('}', $string);
$json = json_decode($string[0] .'}');
echo $json->card_id;

这显然是API的错误, @chris-forrence是正确的,因为如果可能的话,您应该与API维护者一起提出错误...也就是说,您将至少必须解决这个问题。

我认为最简单的方法是使用REGEXP查找和替换。这可以使用preg_replace()功能来处理,看起来像:

$string = preg_replace('/null[0-9]+/', 'null', $string)

在这里,第一个参数是正则参数,与字符串'null'和随后数量的数字匹配。

最新更新