求教一个PHP的正则 <a href='#' title='提示1' class='a'>链接1</a><br /><a href='#' title='提示2' class='a'>链接2</a>我想获取href后面所有的东西:title='提示1' class='a'title='提示2' class='a'怎么获取 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $str = "<a href='#' title='提示1' class='a'>链接1</a><br /><a href='#' title='提示2' class='a'>链接2</a>";$reg = "/<a href[^ ]* ([^>]*)>/i";preg_match_all($reg, $str, $arr);echo '<pre>';print_r($arr[1]);/*输出:Array( [0] => title='提示1' class='a' [1] => title='提示2' class='a')*/ 恩,原来有preg_match_all这个,谢谢其实我另外带来个问题来的,请帮我看下function rewriteoutput($type, $host) {$url = '';switch($type){case 'forum_forumdisplay': list(,, $fid, $page, $extra) = func_get_args(); $r = array( '{fid}' => $fid, '{page}' => $page ? $page : 1, ); $url = 'forum-{fid}-{page}.html'; break;case 'forum_viewthread': list(,, $tid, $page, $extra) = func_get_args(); $r = array( '{tid}' => $tid, '{page}' => $page ? $page : 1, ); $url = 'thread-{tid}-{page}.html'; break;} $href = str_replace(array_keys($r), $r, $url); return $extra; //return '<a href="'.$host.$href.'" '.(!empty($extra) ? stripslashes($extra) : '').'>';}<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />function urlrewrite($content){$forum_search = "/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>/i";$forum_replace = rewriteoutput('forum_forumdisplay','\\1', '\\3','\\6','\\7');$search_replace = array($forum_search => $forum_replace,$thread_search => $thread_replace,);foreach($search_replace as $search => $replace){ $content = preg_replace($search, $replace, $content);}return $content;}$content = ob_get_contents();echo urlrewrite($content);我想获取 title="进入版块1" 这块,为什么我获取的是title="进入版块1">版块1</a><br />这个呢?请问是哪儿的问题 首先你获取的是 title="进入版块1"版块1</a><br />而不是 title="进入版块1">版块1</a><br />你的正则表达式规则只匹配这部分<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />所以替换时把 啊标记替换成了 title="进入版块1" 后面的 版块1</a><br /> 没有替换,原样返回这一点你可以这样观察到$s =<<< TXT<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />TXT;preg_match($forum_search, $s, $r);print_r($r);7Array( [0] => <a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1"> [1] => [2] => [3] => 1 [4] => [5] => [6] => [7] => title="进入版块1") 恩,你好,你写的是正确的请问我要怎么修改可以只获取 title="进入版块1" 而不是 title="进入版块1"版块1</a><br /> 我不知道你想干什么如果是想将形如<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />替换成 title="进入版块1"只需在规则串中加个 .*"/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的如果只是想取得 title="进入版块1", 那么正则匹配结果数组的下标 7 就是你想要的 不知道你想干什么如果是想将形如<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />替换成 title="进入版块1"只需在规则串中加个 .*"/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的 恩,这样可以只获取到 title="进入版块1" 我的需求就是<a href="forumdisplay.php?mod=forumdisplay&fid=1&page=1" title="进入版块1">版块1</a><br />转换成:<a href="forum-1-1.html" title="进入版块1">版块1</a><br /> 关于select count(*) 的问题! 问一个正则的问题。 何我在win2000个人版(sp4)中无法完成mysql的安装? 怎样用javascript获取文本框的值?高手们帮帮小妹吧!! 高分求PHP,字符串截取的问题. 兼职开发机会 用form提交后,按IE的后退会出现网页过期页面。怎样解决这个问题? php.exe有什么用途? 求个简单的PHP+easyui的数据库系统 【求助】123.php?l=这里输入什么!内容里面就出现什么!如何写 为什么这段代码总是报错啊??? 急!!!关于 mysql_fetch_row() 奇怪的问题!!!
$reg = "/<a href[^ ]* ([^>]*)>/i";
preg_match_all($reg, $str, $arr);
echo '<pre>';print_r($arr[1]);
/*
输出:Array
(
[0] => title='提示1' class='a'
[1] => title='提示2' class='a'
)
*/
其实我另外带来个问题来的,请帮我看下
function rewriteoutput($type, $host) {
$url = '';
switch($type){
case 'forum_forumdisplay':
list(,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => $fid,
'{page}' => $page ? $page : 1,
);
$url = 'forum-{fid}-{page}.html';
break;
case 'forum_viewthread':
list(,, $tid, $page, $extra) = func_get_args();
$r = array(
'{tid}' => $tid,
'{page}' => $page ? $page : 1,
);
$url = 'thread-{tid}-{page}.html';
break;
}
$href = str_replace(array_keys($r), $r, $url);
return $extra;
//return '<a href="'.$host.$href.'" '.(!empty($extra) ? stripslashes($extra) : '').'>';
}<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
function urlrewrite($content){
$forum_search = "/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>/i";$forum_replace = rewriteoutput('forum_forumdisplay','\\1', '\\3','\\6','\\7');$search_replace = array(
$forum_search => $forum_replace,
$thread_search => $thread_replace,
);foreach($search_replace as $search => $replace){
$content = preg_replace($search, $replace, $content);
}
return $content;
}$content = ob_get_contents();
echo urlrewrite($content);
我想获取 title="进入版块1" 这块,为什么我获取的是title="进入版块1">版块1</a><br />这个呢?请问是哪儿的问题
而不是 title="进入版块1">版块1</a><br />
你的正则表达式规则只匹配这部分
<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />所以替换时把 啊标记替换成了 title="进入版块1"
后面的 版块1</a><br /> 没有替换,原样返回这一点你可以这样观察到
$s =<<< TXT
<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
TXT;
preg_match($forum_search, $s, $r);
print_r($r);7Array
(
[0] => <a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">
[1] =>
[2] =>
[3] => 1
[4] =>
[5] =>
[6] =>
[7] => title="进入版块1"
)
请问我要怎么修改可以只获取 title="进入版块1" 而不是
title="进入版块1"版块1</a><br />如果是想将形如
<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
替换成 title="进入版块1"
只需在规则串中加个 .*
"/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的如果只是想取得 title="进入版块1", 那么正则匹配结果数组的下标 7 就是你想要的
如果是想将形如
<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
替换成 title="进入版块1"
只需在规则串中加个 .*
"/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的
我的需求就是<a href="forumdisplay.php?mod=forumdisplay&fid=1&page=1" title="进入版块1">版块1</a><br />
转换成:
<a href="forum-1-1.html" title="进入版块1">版块1</a><br />