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);
?>