Php 在文本中查找字符串并分解
我有一段文字:Php 在文本中查找字符串并分解,php,Php,我有一段文字: $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>.'; 但这不起作用。您可以使用DOM通过html进行操作: $dom=新的DOMDocument; $dom->loadHTML($body); $xpath=newdomxpath($dom); foreach
$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>.';
但这不起作用。您可以使用DOM通过html进行操作:
$dom=新的DOMDocument;
$dom->loadHTML($body);
$xpath=newdomxpath($dom);
foreach($xpath->query('//a')作为$link){
变量转储($link->textContent);
变量转储($link->getAttribute('href');
}
您可以使用DOM通过html进行操作:
$dom=新的DOMDocument;
$dom->loadHTML($body);
$xpath=newdomxpath($dom);
foreach($xpath->query('//a')作为$link){
变量转储($link->textContent);
变量转储($link->getAttribute('href');
}
正则表达式在这里是不错的选择。尝试:
$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(例如site.com/text/some
)替换为新的href(例如site.com/some?id=32324
),可以尝试以下操作:
echo preg_replace('/<a(.*)href="(site.com\/text\/some)"(.*)>/','<a$1href="site.com/some?id=32324"$3>',$body);
echo preg_替换(“//”,“$body);
正则表达式在这里是不错的选择。尝试:
$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(例如site.com/text/some
)替换为新的href(例如site.com/some?id=32324
),可以尝试以下操作:
echo preg_replace('/<a(.*)href="(site.com\/text\/some)"(.*)>/','<a$1href="site.com/some?id=32324"$3>',$body);
echo preg_替换(“//”,“$body);
if之后的var\u dump($itemL)
的结果是什么?您希望爆炸的内容可能重复?您期望的输出是什么?在if
之后的var\u dump($itemL)
的结果是什么?您希望爆炸的内容可能重复?您期望的输出是什么?应该注意,DOM方法会在
和
之间丢失其他HTML标记,如
。@Phil:这取决于OP需要什么。他仍然可以通过循环中的以下命令获得该链接的整个HTML:$dom->saveXML($link)
,然后进一步解析该链接……需要注意的是,dom方法将丢失其他HTML标记,如
和
之间的
@Phil:这取决于OP需要什么。他仍然可以通过循环中的以下命令获得该链接的整个HTML:$dom->saveXML($link)
,然后进一步解析该链接……但是我如何在foreach中粘贴$matches[1][0]?谢谢。我有一个问题。如何用已建立的匹配项替换$body
?示例:我想在文本中替换site.com/some?id=32324
上的site.com/text/some
。怎么做?如果您已经知道旧字符串,最好直接使用str\u replace
替换它。如果您不知道确切的旧字符串,可以使用preg\u replace
查找旧字符串并将其替换为新字符串。但是,您必须知道如何查找较旧的string.Updated的模式。希望有帮助。不要用正则表达式解析HTML:但我如何在foreach中粘贴$matches[1][0]?谢谢。我有一个问题。如何用已建立的匹配项替换$body
?示例:我想在文本中替换site.com/some?id=32324
上的site.com/text/some
。怎么做?如果您已经知道旧字符串,最好直接使用str\u replace
替换它。如果您不知道确切的旧字符串,可以使用preg\u replace
查找旧字符串并将其替换为新字符串。但是,您必须知道如何查找较旧的string.Updated的模式。希望有帮助。不要用正则表达式解析HTML: