Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在文本中查找字符串并分解_Php - Fatal编程技术网

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: