您的位置:

php正则使用技巧1,php正则匹配html标签内容

本文目录一览:

php 怎么使用正则

/**

通用正则

参数:

正则,模式,字符串

说明:

通用正则处理函式,可以用来获取,替换,检查内容

返回:

匹配到的内容或Boolean值

用法:

使用之前先把引号之类的替换乾净

$html=Fun::_file_get_contents('');$html=strtr($html,array("'"='','"'=''));

var_dump(Fun::Preg("title(.*)",'one',$html)); //抓取一条内容

var_dump(Fun::Preg("/ href=(.[^ ]*)/i",'arr',$html)); //抓取内容列表

echo Fun::Preg("abc|cde",'rep',$html); //把内容替换掉

if(Fun::Preg(" href=.[^'\" ]*",'chk',$html)){ //判断是否存在

echo 'true';

}

//匹配所有的href

$href=Fun::Preg('/ href=["|\']?([^"\' ]+)["|\']?/i','arr',$html);

/**/

public static function Preg($r,$t,$html){

switch(strtolower($t)){

case 'arr':

preg_match_all("{$r}",$html,$arr,PREG_PATTERN_ORDER);

return $arr;

break;

case 'one':

preg_match("/{$r}/iU",$html,$arr);

return $arr;

break;

case 'rep':

return preg_replace("/{$r}/i",'',$html);

break;

case 'chk':

return preg_match("/{$r}/iU",$html);

break;

default:

return FALSE;

}

}

php中正则表达式是如何使用的

如果你的正则是对的话,代码应该如下

$reg = '[a-zA-z\s]+';

preg_match($reg,$string,$matchs);

//结果

$result = '';

foreach($matchs[1] as $m){

$result .=$m

}

php正则表达式匹配一段中文,中间有换行,空白,应该怎么写

有多种处理方法:

1、使用[\s\S]匹配任意字符,而不是使用“.”

2、使用s单行修饰模式,例:$pattern = '#abc.*?def#s'; //能匹配abc换行def

3、使用\s*匹配换行和空格,php里\s能匹配空白字符,含换行

php里的中文使用 [\x7f-\xff]表示,因此,使用正则:

$pattern = '#[\x7f-\xff]+(?:\s*[\x7f-\xff]+)*#'; 即可

如何用php正则表达式取出“字符”间的字符

PHP使用正则表达式提取字符串中尖括号、小括号()、中括号[]、大括号{}中的字符示例,需要的朋友可以参考下

复制代码 代码如下:

$str="你好我(爱)[北京]{天安门}";

echo f1($str); //返回你好

echo f2($str); //返回我

echo f3($str); //返回爱

echo f4($str); //返回北京

echo f5($str); //返回天安门

function f1($str)

{

$result = array();

preg_match_all("/^(.*)(?:)/i",$str, $result);

return $result[1][0];

}

function f2($str)

{

$result = array();

preg_match_all("/(?:)(.*)(?:)/i",$str, $result);

return $result[1][0];

}

function f3($str)

{

$result = array();

preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);

return $result[1][0];

}

function f4($str)

{

$result = array();

preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);

return $result[1][0];

}

function f5($str)

{

$result = array();

preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);

return $result[1][0];

}

PS: (?:字符) 表示不捕获这个字符。貌似PHP不支持将字符换成括号。

否则的话可以将环视给嵌套进去,就可以循环匹配了。

PS2:环视:(?!) (?=) (?!) (?=)

有小于号的在右侧匹配,没有的在左侧匹配。感叹号表示不等,等于号表示相等。

PS3:都过了验证器的验证,验证器见参考资料。