Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用带两个条件的preg_split将字符串拆分为数组_Php_Arrays_String_Explode_Preg Split - Fatal编程技术网

Php 如何使用带两个条件的preg_split将字符串拆分为数组

Php 如何使用带两个条件的preg_split将字符串拆分为数组,php,arrays,string,explode,preg-split,Php,Arrays,String,Explode,Preg Split,我有这样一个字符串:x320h220 我想把这个字符串分成两个变量:$width和$height 我可以使用explode拆分它,但我必须使用此方法两次才能获得这些值,因此我发现preg\u split可以实现此目的。但我不知道正则表达式如何将这些字符串拆分为两个变量(如果字符串包含x,则将其余部分剪切到h,然后在另一个变量中再次剪切其余部分),它们应该是这样的: $width = 320; $height = 220; 有什么建议吗?使用preg\u match(),而不是preg\u sp

我有这样一个字符串:
x320h220

我想把这个字符串分成两个变量:
$width
$height

我可以使用explode拆分它,但我必须使用此方法两次才能获得这些值,因此我发现
preg\u split
可以实现此目的。但我不知道正则表达式如何将这些字符串拆分为两个变量(如果字符串包含x,则将其余部分剪切到h,然后在另一个变量中再次剪切其余部分),它们应该是这样的:

$width = 320;
$height = 220;
有什么建议吗?

使用
preg\u match()
,而不是
preg\u split()
。使用捕获组提取这两个数字

if (preg_match('/x(\d+)h(\d+)/', $string, $match) ) {
    $width = $match[1];
    $height = $match[2];
}
在regexp中:

  • x
    h
    按字面意思匹配
  • \d+
    匹配一个数字序列
  • 在数字序列周围放置
    ()
    将创建一个捕获组,因此匹配的部分将放入
    $match
    数组中
使用
preg\u match()
,而不是
preg\u split()
。使用捕获组提取这两个数字

if (preg_match('/x(\d+)h(\d+)/', $string, $match) ) {
    $width = $match[1];
    $height = $match[2];
}
在regexp中:

  • x
    h
    按字面意思匹配
  • \d+
    匹配一个数字序列
  • 在数字序列周围放置
    ()
    将创建一个捕获组,因此匹配的部分将放入
    $match
    数组中
    • 使用此 $size=
      preg\u split(“/[xh]/”,“x320h220”,-1,preg\u split\u NO\u EMPTY)

      希望它对你有用:)

      使用这个 $size=
      preg\u split(“/[xh]/”,“x320h220”,-1,preg\u split\u NO\u EMPTY)


      希望它对你有用:)

      @Barmar真棒的家伙。你能解释一下你答案中的正则表达式吗?如果可能的话,解释其中的每一个you@Mohammad我已经添加了它,但是对于这样一个基本的regexp,似乎没有必要详细说明。它不使用任何高级的东西,所以即使是regexp初学者也应该理解它。您应该访问www.regular-expression.info并阅读教程。@Barmar谢谢,我会查出来。@Barmar真棒的家伙。你能解释一下你答案中的正则表达式吗?如果可能的话,解释其中的每一个you@Mohammad我已经添加了它,但是对于这样一个基本的regexp,似乎没有必要详细说明。它不使用任何高级的东西,所以即使是regexp初学者也应该理解它。您应该访问www.regular-expression.info并阅读教程。@Barmar谢谢,我会查看的。