如何在php文件中删除所有php标记

时间:2017-11-02 08:05:06

标签: php jquery html

我试图从PHP文件中删除所有PHP标记。我试图删除PHP标签,因为我想获得所有标签的所有html href值。我不知道是否可能?任何人都可以帮我解决这个问题吗?提前谢谢。

$removedPhptags = preg_replace('/^<\?php(.*)(\?>)?$/s', '$1', "http://localhost/project/test.php");

test.php的

        <html>
        <head>
        <title>Test</title>
        </head>
        <body>
        <div> <a href="test1.html" title="test"></a>
          <?php

         include './menulink.php'; 

        $result_array="123";

        if ($result_array=="123")
        {
        ?>
          <a href="test4.html" title="tesdfhdfhdfht2"></a>
          <?php 


        else{

        ?>
          <a href="test5.html" title="tedfhdfhst"></a>
          <?php


        }

        ?>
        </div>
        </body>
        </html>

menulink.php

                <html>
            <head>
            <title>Test</title>
            </head>
            <body>
            <div> <a href="menulink1.html" title="test">m1</a> <a href="menulink2.html" title="test2">m2</a>
              <?php

            $result_array="123";

               if ($result_array=="123")
            {
            ?>
              <a href="menulink3.html" title="tedfhdfhst">m3</a> <a href="menulink4.html" title="tesdfhdfhdfht2">m4</a>
              <?php 
            }

            else{

            ?>
              <a href="menulink5.html" title="tedfhdfhst">m5</a> <a href="menulink6.html" title="tesdfhdfhdfht2">m6</a>
              <?php


            }

            ?>
            </div>
            </body>
            </html>

2 个答案:

答案 0 :(得分:4)

你在这里做的事情有两个问题,

第一个问题是preg_replace接受第三个参数为String,您可能需要将文件内容作为字符串传递给它

第二个问题是你试图要求你的文件作为HTTP调用,你需要获取文件内容,实际上是通过调用链接本身你试图获得 呈现 输出。

$content = file_get_contents("path/to/file"); // not a file link
$removedPhptags = preg_replace('/^<\?php(.*)(\?>)?$/s', '$1', $content);

答案 1 :(得分:2)

除了@hassan已经给出的答案之外,你的正则表达式将不起作用:

  • 您不应该将开头的php标记链接到字符串的开头。
  • 您不需要贪婪的匹配,因为它会从第一个开始标记到最后一个结束标记。假设这就是你所需要的。

因此,正则表达式所需要的只是:

<\?php(.*?)\?>
^            ^ not bound to start nor end (no ^ and $)
         ^ lazy matching, taking as few characters as possible

An example