PHP str_replace没有传递数据

时间:2016-02-06 00:43:20

标签: php

我正在尝试从网站中提取HTML代码。

首先,我将HTML插入.txt文件中。然后,另一个页面在str_replacing选择的正则表达式时打开txt文件。

我一直在下面的脚本上获得资源ID#4。 我不知道为什么信息没有通过。我生锈了。

我想修剪.txt文件中的选定数据并将其插入另一个.txt文件中。

<?php
set_time_limit(0);

error_reporting(E_ALL);

$fp = fopen('newfile2.txt', 'r');
echo '$fp is resource = ' . (is_resource($fp) ? 'true': 'false');

$re = '/(\n*.*+)+\1<tr>\n.*<td bgcolor=\"#ffffcc\">/'; 
$subst = "<tr><td>"; 

$result = str_replace( $re, $subst, $fp);

$put = file_put_contents("newfile3.txt", $result);

print_r($result);
echo 'testjn';

?>

1 个答案:

答案 0 :(得分:1)

fopen返回资源,而不是字符串。您需要使用freadfile_get_contents

此外str_replace不适用于正则表达式。您可以使用preg_replace

$fp = file_get_contents('newfile2.txt');
$re = '/(\n*.*+)+\1<tr>\n.*<td bgcolor=\"#ffffcc\">/'; 
$subst = "<tr><td>"; 
$result = preg_replace( $re, $subst, $fp);
$put = file_put_contents("newfile3.txt", $result);
print_r($result);
echo 'testing';

您也应该考虑使用HTML / XML解析器。 How do you parse and process HTML/XML in PHP?

以下是您的正则表达式目前的工作原理https://regex101.com/r/gD0wP7/1。这个问题似乎并不是关于正则表达式的。