我正在嘗試使用 PHP 替換內部正文標記,但每次我得到的輸出都與我預期的不同。
嘗試 :
$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>
我只想更改/替換標簽內的字串。
uj5u.com熱心網友回復:
- 分頭和身體
- 替換正文中的字串
- 連接頭部和身體
您的正則運算式有問題,我認為您想同時捕獲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;
uj5u.com熱心網友回復:
好吧,重申一下您在評論中被告知的內容:永遠不要在 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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/421726.html
標籤:
上一篇:查詢無法運行的簡單Laravel
