Php Regex帮助添加rel=";nofollow";指向与预定义URL模式匹配的链接
下面的函数解析从筛选器传递的内容,并将rel=“nofollow”添加到它找到的所有外部链接,当前跳过所有内部链接 假设我在一个变量中定义了一个文件夹路径,比如Php Regex帮助添加rel=";nofollow";指向与预定义URL模式匹配的链接,php,regex,Php,Regex,下面的函数解析从筛选器传递的内容,并将rel=“nofollow”添加到它找到的所有外部链接,当前跳过所有内部链接 假设我在一个变量中定义了一个文件夹路径,比如 $my_folder = "http://mysite.com/recommends/"; 我该如何扩展该函数,以便它也能将nofollow广告到与此模式匹配的链接?这些可能是内部链接,在本例中,这些可能是我不想遵循的唯一内部链接,因此它们需要从内部链接regex位中排除 add_filter('wp_insert_post_data
$my_folder = "http://mysite.com/recommends/";
我该如何扩展该函数,以便它也能将nofollow广告到与此模式匹配的链接?这些可能是内部链接,在本例中,这些可能是我不想遵循的唯一内部链接,因此它们需要从内部链接regex位中排除
add_filter('wp_insert_post_data', 'new_content' );
function new_content($content) {
preg_match_all('~<a.*>~isU',$content["post_content"],$matches);
for ( $i = 0; $i <= sizeof($matches[0]); $i++){
if ( !preg_match( '~nofollow~is',$matches[0][$i])
&& !preg_match( '~'.get_bloginfo('url').'~',$matches[0][$i]) ){
$result = trim($matches[0][$i],">");
$result .= ' rel="nofollow">';
$content["post_content"] = str_replace($matches[0][$i], $result, $content["post_content"]);
}
}
return $content;
add_filter('wp_insert_post_data','new_content');
函数新内容($content){
preg_match_all(“~~isU',$content[“post_content”],$matches);
对于($i=0;$i我没有办法尝试,因为我不是WP用户,但假设您的内部循环将$matches[0][$i]
定义为要比较的当前url:
add_filter('wp_insert_post_data', 'new_content' );
function new_content($content) {
$my_folder = "http://mysite.com/recommends/";
preg_match_all('~<a.*>~isU',$content["post_content"],$matches);
for ( $i = 0; $i <= sizeof($matches[0]); $i++){
if ( !preg_match( '~nofollow~is',$matches[0][$i])
&& (preg_match('~' . $my_folder . '~', $matches[0][$i])
|| !preg_match( '~'.get_bloginfo('url').'~',$matches[0][$i]))){
$result = trim($matches[0][$i],">");
$result .= ' rel="nofollow">';
$content["post_content"] = str_replace($matches[0][$i], $result, $content["post_content"]);
}
}
return $content;
}
添加过滤器(“wp_插入_发布数据”、“新内容”);
函数新内容($content){
$my_文件夹=”http://mysite.com/recommends/";
preg_match_all(“~~isU',$content[“post_content”],$matches);
对于($i=0;$i,根据我的经验,使用dom解析器或xpath管理这些任务要容易得多。在我的初始测试中似乎工作得很好。关于preg_quote?你认为应该是这样的吗?&&(preg_match('~'.preg_quote($my_folder)。'~',$matches[0][$i])是的。为了安全起见,我不会伤害你。好吧,我想这是我最后一次真正写别人的代码,因为你甚至没有投票/接受它似乎没有什么帮助……Crashdown,更正这个:for($I=0;$I)