我有一个文字:
$body = 'I lorem ipsum. And I have more text, I want explode this and search link: <a href="site.com/text/some">I link</a>.';
如何找到“我链接”并展开href
?
我的代码是:
if (strpos($body, 'site.com/') !== false) {
$itemL = explode('/', $body);
}
但这不起作用。
答案 0 :(得分:1)
你可以使用DOM来操作你的html:
$dom = new DOMDocument;
$dom->loadHTML($body);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//a') as $link) {
var_dump($link->textContent);
var_dump($link->getAttribute('href'));
}
答案 1 :(得分:0)
RegEx是个不错的选择。尝试:
$body = 'I lorem ipsum. And I have more text, I want explode this
and search link: <a href="site.com/text/some">I link</a>.';
$reg_str='/<a href="(.*?)">(.*?)<\/a>/';
preg_match_all($reg_str, $body, $matches);
echo $matches[1][0]."<br>"; //site.com/text/some
echo $matches[2][0]; //I link
<强>更新强>
如果您有一个包含许多href和许多链接文本的长文本,例如I link
,您可以使用for循环输出它们,使用如下代码:
for($i=0; $i<count($matches[1]);$i++){
echo $matches[1][$i]; // echo all the hrefs
}
for($i=0; $i<count($matches[2]);$i++){
echo $matches[2][$i]; // echo all the link texts.
}
如果您想用新的href(例如site.com/text/some
)替换旧的href(例如site.com/some?id=32324
),您可以尝试使用preg_replace
:
echo preg_replace('/<a(.*)href="(site.com\/text\/some)"(.*)>/','<a$1href="site.com/some?id=32324"$3>',$body);