php url正则表达式

 更新时间:2016年11月25日 15:10  点击:2109
本文章收集了三种关于从字符串或文章内容中匹配url正则表达式的php代码,前二种函数是获取以域名为标题的http,后一种是匹配内容中的url地址并且保存到数组中哦。

//方法一

$ereg_str[url] =   "^[hh]{1}[tt]{2}[pp]{1}://[ww]{3}.[0-9a-za-z][0-9a-za-z-]{0,25}((.[a-za-z]{3,4})|(.[a-za-z]{2})){1,2}$ "; //判断一个合法的url
$pattern =   $ereg_str['url'];
if(ereg($pattern,$string)) echo   " <br> right! ";
else   echo   " <br> error! ";
}


//

$str[]   =   "http://www.111cn.net";

$pattern   =   '/^(http://)?www.[0-9a-z][0-9a-z-]{0,25}((.(aero|biz|cc|co|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|tv))?(.(af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za))?){1}$/i ';

foreach($str   as   $key=> $val)
{
        $key++;
        if(preg_match($pattern,$val))
                echo   " <br> <font   color=green> right! </font>   ".$val;
        else
                echo   " <br> <font   color=red> error! </font>   ".$val;
}

//方法三

//匹配<a href="xxxxxx">yyyyyy</a>
"/<a.+hrefs*=s*['"]?([^s<'"]*)['"]?.*>([^</a>].*)</a>/i"

//匹配href="xxxxxx"
s*<[aa]{1}s*href="([^"]*)"s*>([^<]*)</1>

$reg = "<a[ss]*?(href)s*=s*(?(?=["'])((["'])(?<href>[^"']*)2)|(?<src>[^s>]+))[ss]*?>";

?>

关于php中单引号与双引号区别有那些很,至于大家都说的下面我用我的理解来说说关于单引号与双引号的区别所在吧,单引号在其中间的变量是不被执行的,把变量当成了一个普通的字符串,而双引号php会去解析中间有变量没有,有的话解析变量,这样双引号在一些方法更费服务器资源。

单引号和双引号大体相同,但有一点非常重要,,就是变量引用问题 ,你把下面代码运行即可明白了

 代码如下 复制代码

<?php

$x="中国";

echo "我是$x人";//双引号

echo "<br />";

echo '我是$x人';//单引号

?>


变量用双引号括起来,单引号中的则不是(即单引号中的变量符号不解析)


单引号内部的变量不会执行

  双引号会执行

  如

 代码如下 复制代码

  $name = 'hello';

  echo "the $name";

  会输出 the hello

  而如果是单引号

 代码如下 复制代码

  $name = 'hello';

  echo 'the $name';

  会输出 the $name

  主要区别就是这个。


在字符串中引用复杂的变量组合时,可能会产生一些问题,下面的代码会正常工作:

 代码如下 复制代码
echo "value = $foo";
echo "value = $a[$i]";

     而下面的代码却不能得到我们希望的结果:

echo "value = $a[$i][$j]"; //我们希望打印二维数组$a的某个元素。

     为避免这些字串使用中的潜在问题,我们通常把复杂的变量从字串中分离开来,就像这样:

 代码如下 复制代码
echo 'value = ' . $a[$i][$j];

     还有一种办法是将复杂变量用花括号括起来,语法分析器就能正确辨认了:

 代码如下 复制代码
echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素

     这样,又出现新问题了。当我们想在字串中引用花括号字符本身时,就要记得使用转义符了:

 代码如下 复制代码
$var = 3;
echo "value = {$var}"; // 打印结果 "value = 3"
echo "value = {$var}"; // 打印结果 "value = {3}"


看个实例

 代码如下 复制代码

$var1 = "chris mao";    //assign the value "chirs mao" to $var1
$var2 = &$var1;            //reference $var1 via $var2
echo '<b>the value of $var2 is: </b>', $var2, "<br>";  //$var2 and $var1 have the same value "chris mao"
$var2 = 'my name is $var2';  //modify $var2, the sametime $var1 was modified
echo '<b>the value of $var1 is: </b>', $var1, "<br>";  //the value of $var1 is "my name is $var2"
$var2 = "my new name is $var1";  //modify $var2, the sametime $var1 was modified
echo '<b>the value of $var2 is: </b>', $var2, "<br>";  //the value of $var1 is "my new name is my name is $var2"
echo '<b>the value of $var1 is: </b>', $var1, "<br>";  //the value of $var1 is "my new name is my name is $var2"

这篇文章对于初学者来说比较有用了,是来告诉你php 定义二维数组与数组定义方法哦,定义一维数组很简单,方法也比较多,定义二级或多维数组也差不多,如下。

$array[] =1; //定义数组
$array = array(1); //定义数组

/*
php如何定义二维数组(多维数组)呢?

将一个一维数组的元素也定义为数组,就是一个二维数组,


$aa=array(0=>"dd",1=>"ff");
$bb=array(0=>"b1",1=>"b2");

$cc=array(0=>$aa;1=>$bb); 此时,$cc[0]也是一个数组,$cc[1]也是一个数组,$cc就是一个二维数组.
*/

//如何动态定义多维数组呢。

$obj = array(16=>16);
for($i=0;$i<16;$i++) {
 for($j=0;$j<16;$j++) {
  $obj[$i]=$j;
 }
}

文章提供了三种php 字符串转数组方法,利用了函数explode str_split split eval等四种函数来举不同的例子说名如何把字符串转换成数组实例。

 
 $str = "corn, broccoli, zucchini";
 $ar = explode(", ", $text);
 print_r($ar);
 /*
 定义和用法
 explode() 函数把字符串分割为数组。
 
 语法
 explode(separator,string,limit)参数 描述
 separator 必需。规定在哪里分割字符串。
 string 必需。要分割的字符串。
 limit 可选。规定所返回的数组元素的最大数目。
*/ 
 
 $biuuu = 'www.111cn.net';
 print_r(str_split($biuuu)) 
 /*
 定义和用法
 str_split() 函数把字符串分割到数组中。
 
 语法
 str_split(string,length)参数 描述
 string 必需。规定要分割的字符串。
 length 可选。规定每个数组元素的长度。默认是 1。
*/
 
 //
 $str="$str=$str;";
 eval($str);
 
 $string = '杯子';
 $name = '咖啡';
 $str = '这个 $string 中装有 $name.<br>';
 echo $str;
 eval( "$str = "$str";" );
 echo $str;

 //eval eval()函数的作用是:返回与php代码相对应的字符串。
 
 
 $str="1:0:1:0:1";
 $arraylist=split(":",$str); //存入数组
 
 for($i=0;$i<count($arraylist);$i++) //把它们全部输出来
 {
 echo $arraylist[$i]."   ";
 }

变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:

class test
{
public static function a(){}
public function b(){}
}
$obj = new test;

调用 代码

test::a();
$obj->a();
$obj->b();

 

例子 演示需要静态变量的例子
<?php教程

class myobject {
 public static $mystaticvar = 0;

 function mymethod() {
  // ::为作用域限定操作符
  // 用的self作用域而不是$this作用域
  // 因为$this只表示类的当前实例,而self::表达的是类的本身
  self::$mystaticvar += 2;
  echo self::$mystaticvar . "<br />";
 }
}

$instance1 = new myobject();
$instance1->mymethod();  // 显示 2

$instance2 = new myobject();
$instance2->mymethod();  // 显示 4

?>

 

<?php

class myobject {
 public static $myvar = 10;
}

echo myobject::$myvar;

// 结果: 10
?>


本函数没什么用处,因为每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有作用,因为一旦退出本函数则变量 $w3sky 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态的:


例子 使用静态变量的例子

<?php
   function test()
   {
   static $w3sky = 0;
   echo $w3sky;
   $w3sky++;
   }
   ?>
现在,每次调用 test() 函数都会输出 $w3sky 的值并加一。

看个实例


<?php
class foo
{
public static $my_static = 'foo';
public function staticvalue() {
return self::$my_static;
}
}
class bar extends foo
{
public function foostatic() {
return parent::$my_static;
}
}
print foo::$my_static . "n";
$foo = new foo();
print $foo->staticvalue() . "n";
print $foo->my_static . "n"; // undefined "property" my_static
print $foo::$my_static . "n";
$classname = 'foo';
print $classname::$my_static . "n"; // php 5.3.0之后可以动态调用
print bar::$my_static . "n";
$bar = new bar();
print $bar->foostatic() . "n";
?>
更多详细内容请查看:http://www.111cn.net/phper/php-cy/33303.htm

[!--infotagslink--]

相关文章

  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • JS基于正则截取替换特定字符之间字符串操作示例

    这篇文章主要介绍了JS基于正则截取替换特定字符之间字符串操作方法,结合具体实例形式分析了JS基于正则实现针对特殊字符、数字等字符串类型的截取操作相关技巧,需要的朋友可以参考下...2017-02-08
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • 一文秒懂python正则表达式常用函数

    这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • Idea使用正则表达式批量替换字符串的方法

    这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
  • js正则学习小记之匹配字符串字面量

    关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • javascript 手机号码正则表达式验证函数 <font color=red>原创</font>

    随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。...2021-05-07
  • C# 中使用正则表达式匹配字符的含义

    正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11