替换原始数据响应中的字符串不起作用

时间:2018-09-25 10:38:56

标签: php curl

使用PHP CURL,我正在调用一个URL,并且从一页得到一些响应,现在我需要从该响应中替换一个字符串,但是它不起作用,请检查下面的代码。

$url = "My URL";
$url1 = $url1 = str_replace(' ', '%20', $url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_HEADER, 0);            
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$raw_data1 = curl_exec($ch);
curl_close($ch);

$raw = str_replace('@', 'Test', $raw_data1);
echo $raw;

2 个答案:

答案 0 :(得分:0)

您正在尝试替换特殊字符,我的建议是您应该尝试使用preg_replace()而不是str_replace()

尝试以下示例:

$url = "My URL";
$url1 = $url1 = str_replace(' ', '%20', $url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_HEADER, 0);            
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$raw_data1 = curl_exec($ch);
curl_close($ch);

$raw = preg_replace("([@]+)", "Test", $raw_data1);
echo $raw;

答案 1 :(得分:0)

要替换字符串模式,请始终使用preg_replace(),在您的情况下,响应来自其他来源,因此替换字符串的更好方法是找到定义模式并替换为preg_replace()

这就是您需要的preg_replace("([@]+)", "test", $raw_data1);