使用 PHP 替换内部 body
Replacing inside body using PHP
我正在尝试使用 PHP 替换内部 body 标签,但每次我得到的输出都与我预期的不同。
尝试:
$homepage = "<head>https://www.example.com</head> <body>https://www.example.com</body>";
$homepage = substr($homepage, strpos($homepage, "<body>"));
$homepage = preg_replace("/https:\/\/(.?)+\.example\.com/", "https://www.example.net", $homepage);
echo $homepage;
输出:
<head>https://www.example.net</body>
我正在寻找的输出:
<head>https://www.example.com</head> <body>https://www.example.net</body>
我只想change/replace标签里面的字符串。
- 分头 & body
- 替换 body
中的字符串
- 加入头&body
你的正则表达式有问题,我以为你想同时捕获 https://www.example.com
和 https://example.com
这是您要查找的内容:
<?php
$homepage = '<head><link rel="stylesheet" type="text/css" href="https://www.example.com/whatever.css"></head><body>This link <a href="https://www.example.com">https://example.com</a> and this one <a href="https://www.example.com">https://www.example.com</a> will be replaced</body>';
$neck_pos = strpos($homepage, "<body");
$head = substr($homepage, 0, $neck_pos);
$body = substr($homepage, $neck_pos);
$body = preg_replace("/https:\/\/[w]*\.*example\.com/", "https://www.example.net", $body);
$homepage = $head . $body;
echo $homepage;
好吧,重申一下评论中告诉您的内容:不要在 HTML/XML 上使用正则表达式 - 永远不要。始终使用解析器和(最好)xpath 进行搜索。作为第一步,请查看下面的示例 - 您将需要通读整个主题。如果 HTML/XML 变得更复杂,搜索也会变得更复杂:
$homepage = "<head>https://www.example.com</head> <body>https://www.example.com</body>";
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($homepage, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($doc);
$target= $xpath->query('//body');
$target[0]->nodeValue="https://www.example.net";
echo $doc->saveHTML();
输出:
<p>https://www.example.com <body>https://www.example.net</body></p>
我正在尝试使用 PHP 替换内部 body 标签,但每次我得到的输出都与我预期的不同。
尝试:
$homepage = "<head>https://www.example.com</head> <body>https://www.example.com</body>";
$homepage = substr($homepage, strpos($homepage, "<body>"));
$homepage = preg_replace("/https:\/\/(.?)+\.example\.com/", "https://www.example.net", $homepage);
echo $homepage;
输出:
<head>https://www.example.net</body>
我正在寻找的输出:
<head>https://www.example.com</head> <body>https://www.example.net</body>
我只想change/replace标签里面的字符串。
- 分头 & body
- 替换 body 中的字符串
- 加入头&body
你的正则表达式有问题,我以为你想同时捕获 https://www.example.com
和 https://example.com
这是您要查找的内容:
<?php
$homepage = '<head><link rel="stylesheet" type="text/css" href="https://www.example.com/whatever.css"></head><body>This link <a href="https://www.example.com">https://example.com</a> and this one <a href="https://www.example.com">https://www.example.com</a> will be replaced</body>';
$neck_pos = strpos($homepage, "<body");
$head = substr($homepage, 0, $neck_pos);
$body = substr($homepage, $neck_pos);
$body = preg_replace("/https:\/\/[w]*\.*example\.com/", "https://www.example.net", $body);
$homepage = $head . $body;
echo $homepage;
好吧,重申一下评论中告诉您的内容:不要在 HTML/XML 上使用正则表达式 - 永远不要。始终使用解析器和(最好)xpath 进行搜索。作为第一步,请查看下面的示例 - 您将需要通读整个主题。如果 HTML/XML 变得更复杂,搜索也会变得更复杂:
$homepage = "<head>https://www.example.com</head> <body>https://www.example.com</body>";
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($homepage, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($doc);
$target= $xpath->query('//body');
$target[0]->nodeValue="https://www.example.net";
echo $doc->saveHTML();
输出:
<p>https://www.example.com <body>https://www.example.net</body></p>