php正则获取字符串,给定两边的字符串提取中间字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php正则获取字符串,给定两边的字符串提取中间字符相关的知识,希望对你有一定的参考价值。

比如说有如下的字符串 $str = '<p><img src="/ueditor/php/upload/image/20150201/122128907320.png" style="" title="122128907320.png"/></p><p><img src="/ueditor/php/upload/image/20150201/122129736003.jpg" style="" title="122129736003.jpg"/></... 比如说有如下的字符串 $str = '<p><img src="/ueditor/php/upload/image/20150201/122128907320.png" style="" title="122128907320.png"/></p><p><img src="/ueditor/php/upload/image/20150201/122129736003.jpg" style="" title="122129736003.jpg"/></p><p><img src="/ueditor/php/upload/image/20150201/122129743354.jpg" style="" title="122129743354.jpg"/></p><p><img src="/ueditor/php/upload/image/20150201/122129944419.png" style="" title="122129944419.png"/></p><p><br/></p>'; 我想提取img的地址如/ueditor/php/upload/image/20150201/122128907320.png,所以最后提取出来的应该是一个数组,在php中怎么用正则实现呢,最后形成一个4个元素的数组包含了4张图的src地址,谢谢! 展开

参考技术A $preg
=
'<img
src=\"#(.*)#\"
style=\"\"
title=\"#(.*)#\"/>'
类似这样,没测试过,这样正则出来的,是一个二维数组,array[1][i]就是4张图的src地址了,也就是数据中的第2行数据

php正则表达式字符串中提取数字,并截取其中的6位

用 php 先提取字符串 b37ba964bb7dfab1869e1cf8 中的数字
例如截取后数字是:379647186918

然后最终获取从
第二位开始,长度4位数字:7964
或者
第三位开始,长度5位数字:96471

php 中该如何表达,谢谢!
麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$函数”调用,这个应该怎么写?

<?php
$str='b37ba964bb7dfab1869e1cf8';
$preg= "/\\d/is";
preg_match_all($preg,$str,$arr);
$temp=implode('',$arr[0]);
echo $temp;//匹配的数字
echo '<br/>'. substr($temp,1,4);//第2位开始取4个
echo '<br/>'.substr($temp,2,5);//第3位开始取5个
?>

追问

麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用,这个应该怎么写?

追答

没明白你在说啥

追问

感谢

参考技术A

1、先把字符串 “b37ba964bb7dfab1869e1cf8” 中的字母(或者说非数字)替换掉,剩下的就都是数字

$string = preg_replace('/[^\\d]*/', '', 'b37ba964bb7dfab1869e1cf8');
// 输出 $string = 379647186918

2、截取字符串

echo substr('379647186918', 1, 4); // 第二位开始截4个长度,输出 7964
echo substr('379647186918', 2, 5); // 第三位开始截5个长度,输出 96471

追问

麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用,这个应该怎么写?

追答$string = preg_replace('/[^\\d]*/', '', $key);

本回答被提问者采纳
参考技术B

思路:首先移除非数字内容(利用正则),然后使用字符串进行截取(substr)。写成函数可以直接调用。代码如下:

function ProcessString($str,$start,$len)
  $result=preg_replace("/[\\D]/","",$str);//利用正则替换掉非数字内容
  return substr($result,$start,$len);  //利用substr进行字符截取

$str="b37ba964bb7dfab1869e1cf8";
echo ProcessString($str,1,4);  //7964 字符由零开始,1表示第二位,4表示截取长度
echo ProcessString($str,2,5); //96471//其中$str为要处理的字符串,$start是截取数字的起始位置  $lend表示要处理的长度

如果 b37ba964bb7dfab1869e1cf8  的值是“$key”调用应该这样写(利用以上函数):

$key="b37ba964bb7dfab1869e1cf8";
echo ProcessString($key,2,5);



追问

感谢

以上是关于php正则获取字符串,给定两边的字符串提取中间字符的主要内容,如果未能解决你的问题,请参考以下文章

PHP正则提取字符串

Python中使用正则表达式获取两个字符中间部分

求VBA中一简单正则表达式

php 正则表达式 提取字符串内小括号中的数字,只要数字

批处理如何用正则提取字符串中间的数字,和结尾的数字

php提取字符串中网站url地址的方法