Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_替换未按我需要的方式工作_Php_Search_Preg Replace_File Get Contents - Fatal编程技术网

Php preg_替换未按我需要的方式工作

Php preg_替换未按我需要的方式工作,php,search,preg-replace,file-get-contents,Php,Search,Preg Replace,File Get Contents,以下内容无法按我需要的方式工作: $homepage = file_get_contents('www.site.com'); $var1= preg_replace('#ProdSupp\*(.*?)\*ProdSupp#siu', '$1', $homepage); 当它对站点内容进行归档时,它确实会在ProdSupp**ProdSupp中找到内容,但var1在获取它要查找的字符串后会存储整个内容……我如何才能消除var1中的所有内容,而只让它在ProdSupp**ProdSupp之间

以下内容无法按我需要的方式工作:

$homepage = file_get_contents('www.site.com'); 
$var1= preg_replace('#ProdSupp\*(.*?)\*ProdSupp#siu', '$1', $homepage); 
当它对站点内容进行归档时,它确实会在
ProdSupp**ProdSupp
中找到内容,但var1在获取它要查找的字符串后会存储整个内容……我如何才能消除var1中的所有内容,而只让它在
ProdSupp**ProdSupp
之间存储内容

我不知道如何消除垃圾文本,只存储
ProdSupp**ProdSupp
之间的值。有什么想法吗?

”(这不是我的,只是它的名字)是一个方便的工具,用于调试类似的东西。如果我正确阅读了您正在尝试执行的操作,那么看起来您实际上应该使用
preg\u match\u all()
而不是
preg\u replace()


$matches数组:
(
[0]=>阵列
(
[0]=>ProdSupp*baz 12345食物棒*ProdSupp
)
[1] =>阵列
(
[0]=>baz 12345食物棒
)
)

因此,当所有这些都说了又做了之后,您要查找的内容都在
$matches[1][0]

中,如前所述,如果我正确理解您的问题,您可能应该使用某种preg_match函数

如果您想进行替换并获取匹配项,可以使用preg_replace_callback和如下全局变量:



在$var1数组中,括号内是您的匹配项,在$var11中是整个修改内容。

请查看
preg\u match
<?php
$sourcestring = "ProdSupp*baz 12345 foo bar*ProdSupp";
preg_match_all('/ProdSupp\*(.*?)\*ProdSupp/ims', $sourcestring, $matches);
echo "<pre>".print_r($matches,true)."</pre>";
?>

$matches Array:
(
    [0] => Array
        (
            [0] => ProdSupp*baz 12345 foo bar*ProdSupp
        )

    [1] => Array
        (
            [0] => baz 12345 foo bar
        )
)
<?php
global $var1;
$var1= array();

global $index;
$index=0;


$callbackFunction = create_function('$matches',  
   ' 
     global $var1;
     global $index; 
     $var1[$index]=$matches[1];
     $index++;
     return $matches[1]; 
   ');

   $var11= preg_replace_callback('#ProdSupp\*(.*?)\*ProdSupp#siu', $callbackFunction, $homepage); 

?>