php - 抓取 PHP 文件中特定标签之间的文本

标签 php regex tags file-get-contents preg-match-all

很抱歉,如果这个问题已经在其他地方得到了回答。我查看了堆栈溢出,但找不到我要找的东西。

我需要知道如何扫描单个目录(例如 test/)中的多个 php 文件,并在每个 php 文件的特定“标记”区域之间提取文本。

“标记”区域的示例:

<?
/*
{('test1')}
*/
?>

<div>text here</div>

<?
/*
{('test2')}
*/
?>

代码会显示 test1、test2 等,而忽略其他任何内容。我尝试查看 fopen()、file_get_contents 和 preg_match_all,但每次它们只找到第一次出现,而不是每次出现“标记”区域。任何帮助都会很棒!

编辑 - 我目前拥有的:

foreach (glob("templates/*.php") as $fn) {

$file = file_get_contents($fn);

preg_match_all("#\{\('(\w+)'\)}#", $file, $matches);   

$variable = join('', $matches[1]);

echo $variable.'<br />';

我如何向其中添加 array_chunk,以便测试的每次迭代都被回显为它自己的变量,而不是分组到一个数组中。我试过这个:

$variable = array_chunk($matches[1],1);

没有成功,它只是打印“Array”。任何帮助都会很棒。如果我没有得到回复,我将发布一个新问题。

最佳答案

这就是你如何转义正则表达式:

foreach (glob("template/*.php") as $fn) {

    $file = file_get_contents($fn);

    preg_match_all("#\{\('(\w+)'\)}#", $file, $matches);   

    print_r($matches);

}

Eugen 展示了如何匹配 PHP/PI <?标签和 /*评论区也是。您可能只需要 \s*介于两者之间。

关于php - 抓取 PHP 文件中特定标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022605/

相关文章:

PHP rename() 不会在出错时抛出异常

php - 如何处理全文搜索中的多个搜索条件和优先级

php - 警告 : mysql_fetch_object(): supplied argument is not a valid MySQL result resource

PHP 表单验证函数

regex - vi:::s 如何只替换一行中的第二次出现?

php - 标签 friend 照片

PHP结束标记 "?>"

javascript - 如何为网站编写UML类图?

c - pcre C API 只返回第一个匹配项

search - 寻找易于被搜索引擎索引的唯一 ID 模式