正则表达取值问题 <a>星期五(3点)有记录</a><a>星期三无记录</a>我要取出 星期五 和3点 然后有的是没有(3点)的 就是只取星期几和有括号就也取括号里的 没括号就只取星期几 这该怎么做正则 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢你 我也在试 不够还没到理想的结果 目前是这样<?php$str = <<<EOT<a>星期五(3点)有记录</a><a>星期三无记录</a>EOT;if(preg_match_all('%(星期.*)(\((.*)\))?(?:有|无)%isU',$str,$matches,PREG_SET_ORDER)){ $ret = array(); foreach($matches as $i => $match){ if(array_key_exists(3,$match)){ $ret[$i]['day'] = $match[1]; $ret[$i]['credits'] = $match[3]; }else{ $ret[$i]['day'] = $match[1]; } } print_r($ret);}?> $s=<<<html<a>星期五(3点)有记录</a><a>星期三无记录</a>html;preg_match_all('/(星期[^(]+)(\(([^\)]+)\)|无)/',$s,$m);print_r($m);Array( [0] => Array ( [0] => 星期五(3点) [1] => 星期三无 ) [1] => Array ( [0] => 星期五 [1] => 星期三 ) [2] => Array ( [0] => (3点) [1] => 无 ) [3] => Array ( [0] => 3点 [1] => )) 恩 这正则确实厉害 谢谢你 但是有个地方$s=<<<html<a>星期五(3点)有记录</a><a>星期三无记录</a>html;这个是单条 不是一起的 我要一条一条判断 你这放到一起判断很对 但是我单独用<a>星期三无记录</a>来输出 好像不行了 因为本来就没(3点)括号的东西了 想到个笨方法$a='<a>星期五(3点)有记录</a>';$b='<a>星期三无记录</a>';function pre($str){ $arr=array(); $preg1='#<a>(星期.{3})[^(]+</a>#'; $preg2='#<a>(星期.{3}\(.*\)).*</a>#Ui'; if(($c=preg_match_all($preg1,$str,$arr))==1){ return $arr; } preg_match_all($preg2,$str,$arr); return $arr;}这样好像可以匹配,就是太笨了,弄不来高级的。 怎么不对呢?$s=<<<html<a>星期三无记录</a>html;preg_match_all('/(星期[^(]+)(\(([^\)]+)\)|无)/',$s,$m);print_r($m);Array( [0] => Array ( [0] => 星期三无 ) [1] => Array ( [0] => 星期三 ) [2] => Array ( [0] => 无 ) [3] => Array ( [0] => ))恩 这正则确实厉害 谢谢你 但是有个地方$s=<<<html<a>星期五(3点)有记录</a><a>星期三无记录</a>html;这个是单条 不是一起的 我要一条一条判断 你这放到一起判断很对 但是我单独用<a>星期三无记录</a>来输出 好像不行了 因为本来就没(3点)括号的东西了 php 调用 C++ dll 问一个正则的问题 一个"No database selected"的问题 同一技术岗位工资会有差异吗,兼散分 关于html+css的一个小问题 include的文件时先被执行,还是被include后才执行。 iframe问题,为什么有时显示不出来,需要刷新几下才能显示 初学php 问一个小问题?见笑了 :) 搜索出来如何让关键字如何变亮。 php处理异常问题 列出指定目录下所有文件的PHP代码? PHP里有没有像htmlspecialchars()那样的把要用在LIKE中的字符串中的通配符转换成转义字符的函数?
谢谢你 我也在试 不够还没到理想的结果 目前是这样
<?php
$str = <<<EOT
<a>星期五(3点)有记录</a>
<a>星期三无记录</a>
EOT;
if(preg_match_all('%(星期.*)(\((.*)\))?(?:有|无)%isU',$str,$matches,PREG_SET_ORDER)){
$ret = array();
foreach($matches as $i => $match){
if(array_key_exists(3,$match)){
$ret[$i]['day'] = $match[1];
$ret[$i]['credits'] = $match[3];
}else{
$ret[$i]['day'] = $match[1];
}
}
print_r($ret);
}
?>
<a>星期五(3点)有记录</a>
<a>星期三无记录</a>
html;
preg_match_all('/(星期[^(]+)(\(([^\)]+)\)|无)/',$s,$m);
print_r($m);
Array
(
[0] => Array
(
[0] => 星期五(3点)
[1] => 星期三无
) [1] => Array
(
[0] => 星期五
[1] => 星期三
) [2] => Array
(
[0] => (3点)
[1] => 无
) [3] => Array
(
[0] => 3点
[1] =>
))
恩 这正则确实厉害 谢谢你 但是有个地方
$s=<<<html
<a>星期五(3点)有记录</a>
<a>星期三无记录</a>
html;
这个是单条 不是一起的 我要一条一条判断 你这放到一起判断很对 但是我单独用<a>星期三无记录</a>来输出 好像不行了 因为本来就没(3点)括号的东西了
$a='<a>星期五(3点)有记录</a>';
$b='<a>星期三无记录</a>';
function pre($str){
$arr=array();
$preg1='#<a>(星期.{3})[^(]+</a>#';
$preg2='#<a>(星期.{3}\(.*\)).*</a>#Ui';
if(($c=preg_match_all($preg1,$str,$arr))==1){
return $arr;
}
preg_match_all($preg2,$str,$arr);
return $arr;
}
这样好像可以匹配,就是太笨了,弄不来高级的。
<a>星期三无记录</a>
html;
preg_match_all('/(星期[^(]+)(\(([^\)]+)\)|无)/',$s,$m);
print_r($m);Array
(
[0] => Array
(
[0] => 星期三无
) [1] => Array
(
[0] => 星期三
) [2] => Array
(
[0] => 无
) [3] => Array
(
[0] =>
))恩 这正则确实厉害 谢谢你 但是有个地方
$s=<<<html
<a>星期五(3点)有记录</a>
<a>星期三无记录</a>
html;
这个是单条 不是一起的 我要一条一条判断 你这放到一起判断很对 但是我单独用<a>星期三无记录</a>来输出 好像不行了 因为本来就没(3点)括号的东西了