标签: preg-match-all

在PHP中使用preg_match时,"...中的未知修饰符'g'?

这是我正在尝试使用的正则表达式:

/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim
Run Code Online (Sandbox Code Playgroud)

我在这个网站上找到了它,当我在那里试用它时效果很好.但是只要我把它放在我的代码中,我就会得到这样的信息:

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释什么是错的,为什么它在该网站上工作而不是在我的代码中?

php regex preg-match-all preg-match

78
推荐指数
1
解决办法
6万
查看次数

PHP preg_match和preg_match_all函数

我想知道它们preg_matchpreg_match_all功能的用途以及如何使用它们.

php preg-match-all preg-match

38
推荐指数
3
解决办法
4万
查看次数

用php获取字符串中的第一个图像

我正在尝试从每个帖子中获取第一张图片.如果我只有一个图像,下面这段代码很有用.但如果我有一个以上它给了我一个图像,但并不总是第一个.

我真的只想要第一张图片.很多时候第二个图像是下一个按钮

$texthtml = 'Who is Sara Bareilles on Sing Off<br>
<img alt="Sara" title="Sara" src="475993565.jpg"/><br>
<img alt="Sara" title="Sara two" src="475993434343434.jpg"/><br>';

preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $texthtml, $matches);
$first_img = $matches [1] [0];
Run Code Online (Sandbox Code Playgroud)

现在我可以把这个"$ first_img"放在简短描述的前面

<img alt="Sara" title="Sara" src="<?php echo $first_img;?>"/>
Run Code Online (Sandbox Code Playgroud)

php image preg-match-all

26
推荐指数
3
解决办法
3万
查看次数

php从双引号中提取字符串

我有一个字符串:

这是一个文字,"你的余额留下0.10美元",结束0

如何在双引号之间提取字符串并仅包含文本(不带双引号):

你的余额剩下0.10美元

我试过preg_match_all()但没有运气.

php string preg-match-all preg-match double-quotes

25
推荐指数
4
解决办法
5万
查看次数

如何使用preg_match_all()获取子组匹配的所有捕获?

更新/注意事项:

我认为我可能正在寻找的是用PHP 获取组捕获.

引用:使用命名模式子例程的PCRE正则表达式.

(仔细读:)


我有一个包含可变数量的段(简化)的字符串:

$subject = 'AA BB DD '; // could be 'AA BB DD CC EE ' as well
Run Code Online (Sandbox Code Playgroud)

我想现在匹配段并通过匹配数组返回它们:

$pattern = '/^(([a-z]+) )+$/i';
$result = preg_match_all($pattern, $subject, $matches);
Run Code Online (Sandbox Code Playgroud)

这只会返回捕获组2 的最后一个匹配:DD.

有没有办法,我可以检索所有的子模式捕获(的方式AA,BB,DD)与一个正则表达式执行?不preg_match_all适合这个吗?

这个问题是一个概括.

无论是$subject$pattern简化.自然地与这样的通用列表AA,BB..是更容易与其它功能(例如,以提取explode),或与的的变化$pattern.

但我特别询问如何使用preg_...-family函数返回所有子组匹配.

对于现实生活中的情况,假设您有多个(嵌套)级别的子模式匹配变量.

这是用于描述一些背景的伪代码的示例.想象一下:

令牌的常规定义:

   CHARS := [a-z]+
   PUNCT := …
Run Code Online (Sandbox Code Playgroud)

php regex grammar preg-match-all

19
推荐指数
1
解决办法
1万
查看次数

PHP Regex检查两个字符串是否共享两个公共字符

我刚刚开始了解正则表达式,但经过相当多的阅读(并且学习了很多)后,我仍然无法找到解决这个问题的好方法.

让我说清楚,我明白这个特殊问题可能更好地解决使用正则表达式,但为了简洁起见,我只想说我需要使用正则表达式(相信我,我知道有更好的方法来解决这个问题) ).

这是问题所在.我给了一个大文件,每行的长度恰好是4个字符.

这是一个定义"有效"行的正则表达式:

"/^[AB][CD][EF][GH]$/m" 
Run Code Online (Sandbox Code Playgroud)

在英语中,每一行在位置0处具有A或B,在位置1处具有C或D,在位置2处具有E或F,并且在位置3处具有G或H.我可以假设每行将精确地为4个字符长.

我正在尝试做的是给出其中一行,匹配包含2个或更多共同字符的所有其他行.

以下示例假定以下内容:

  1. $line 始终是有效的格式
  2. BigFileOfLines.txt 仅包含有效行

例:

// Matches all other lines in string that share 2 or more characters in common
// with "$line"
function findMatchingLines($line, $subject) {
    $regex = "magic regex I'm looking for here";
    $matchingLines = array();
    preg_match_all($regex, $subject, $matchingLines);
    return $matchingLines;
}

// Example Usage
$fileContents = file_get_contents("BigFileOfLines.txt");
$matchingLines = findMatchingLines("ACFG", $fileContents);

/*
 * Desired return value (Note: this is an example set, there 
 * could be …
Run Code Online (Sandbox Code Playgroud)

php regex preg-match-all

12
推荐指数
1
解决办法
1327
查看次数

Ruby中的preg_match_all和preg_replace

我正在从php过渡到ruby,我试图在ruby中找出php命令preg_match_all和preg_replace的同源性.

非常感谢!

php ruby ruby-on-rails preg-replace preg-match-all

11
推荐指数
1
解决办法
9787
查看次数

与preg_match_all()重复匹配

我试图让所有子串与乘数匹配:

$list = '1,2,3,4';
preg_match_all('|\d+(,\d+)*|', $list, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

此示例按预期返回上次匹配[1]:

Array
(
    [0] => Array
        (
            [0] => 1,2,3,4
        )

    [1] => Array
        (
            [0] => ,4
        )

)
Run Code Online (Sandbox Code Playgroud)

但是,我希望得到所有匹配的字符串(,\d+),以获得类似的东西:

Array
(
    [0] => ,2
    [1] => ,3
    [2] => ,4
)
Run Code Online (Sandbox Code Playgroud)

有没有办法用一个功能,如preg_match_all()

php regex preg-match-all preg-match

10
推荐指数
2
解决办法
3016
查看次数

如何从HTML中的所有<span>标记之间获取数组中的文本?

我想在<span> </span>HTML中的所有标记之间获取数组中的文本,我已尝试使用此代码,但它只返回一次:

preg_match('/<span>(.+?)<\/span>/is', $row['tbl_highlighted_icon_content'], $matches);

echo $matches[1]; 
Run Code Online (Sandbox Code Playgroud)

我的HTML:

<span>The wish to</span> be unfairly treated is a compromise attempt that would COMBINE attack <span>and innocen</span>ce.  Who can combine the wholly incompatible, and make a unity  of what can NEVER j<span>oin? Walk </span>you the gentle way,
Run Code Online (Sandbox Code Playgroud)

我的代码只返回一次span标记,但我希望以php数组的形式从HTML中的每个span标记中获取所有文本.

php preg-match-all preg-match

10
推荐指数
1
解决办法
7040
查看次数

正则表达式 - 在匹配中忽略字符串的某些部分

这是我的字符串:

address='St Marks Church',notes='The North East\'s premier...'
Run Code Online (Sandbox Code Playgroud)

我用来抓住各个部分的正则表达式match_all

'/(address|notes)='(.+?)'/i'
Run Code Online (Sandbox Code Playgroud)

结果是:

地址=>圣马克教堂
笔记=>东北\

如何让它忽略笔记的\'字符?

regex preg-match-all

10
推荐指数
2
解决办法
3万
查看次数