php domdocument加载带有跳过错误的HTML或正则表达式解决方案
今天早些时候,我问了一个问题,关于用return fo some函数替换html中所有链接的HREF的正则表达式解决方案 然后我删除了它,因为我似乎可以使用DomDocument处理它,但结果是,我不能 看,我的html有很多错误的html syntex、html5代码等。所以loadHTML和loadXML都不起作用 如果有人能提供带有正则表达式的解决方案来查找href并使用调用函数替换all..我尝试过preg_replace和preg_replace_回调,但我不理解$1,$2..整个概念。。 我搜索了所有类似的问题,但它们都有DomDocumenet的答案,我无法使用 类似的老问题: 但我需要正则表达式解决方案请尝试以下代码:php domdocument加载带有跳过错误的HTML或正则表达式解决方案,php,html,regex,preg-replace,preg-replace-callback,Php,Html,Regex,Preg Replace,Preg Replace Callback,今天早些时候,我问了一个问题,关于用return fo some函数替换html中所有链接的HREF的正则表达式解决方案 然后我删除了它,因为我似乎可以使用DomDocument处理它,但结果是,我不能 看,我的html有很多错误的html syntex、html5代码等。所以loadHTML和loadXML都不起作用 如果有人能提供带有正则表达式的解决方案来查找href并使用调用函数替换all..我尝试过preg_replace和preg_replace_回调,但我不理解$1,$2..整个概念
// $text - your text
// $1 - preg variable for 1st "(.*)" match
// $2 - preg variable for 2nd "(.*)" match
preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a $1 href="http://new.href" $3>',$text);
/$text-您的文本
//$1-第一个“(.*)”匹配的preg变量
//$2-第二个“(.*)”匹配的preg变量
preg_replace('/我创建了一个..人们通常担心的主要问题是有其他属性,在href之前、之后、空格、错误的url规范、单引号或双引号中的href url等等..最大的优点是我学会了如何使用它们
$callback = function ($match) use($params){
$data = MyClass::updateUrl($match[2], $params);
$return_data = 'href='.$match[1].$data.$match[1];
return $return_data;
};
$reg = "#href\s*=\s*(\"|')?([^\"'>]+)(\"|')#i";
return preg_replace_callback($reg, $callback, $html);
thnx..我实现的类似解决方案..喜欢..:)