这是我正在尝试使用的正则表达式:
/^(\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)
任何人都可以解释什么是错的,为什么它在该网站上工作而不是在我的代码中?
我想知道它们preg_match和preg_match_all功能的用途以及如何使用它们.
我正在尝试从每个帖子中获取第一张图片.如果我只有一个图像,下面这段代码很有用.但如果我有一个以上它给了我一个图像,但并不总是第一个.
我真的只想要第一张图片.很多时候第二个图像是下一个按钮
$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) 我有一个字符串:
这是一个文字,"你的余额留下0.10美元",结束0
如何在双引号之间提取字符串并仅包含文本(不带双引号):
你的余额剩下0.10美元
我试过preg_match_all()但没有运气.
更新/注意事项:
(仔细读:)
我有一个包含可变数量的段(简化)的字符串:
$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) 我刚刚开始了解正则表达式,但经过相当多的阅读(并且学习了很多)后,我仍然无法找到解决这个问题的好方法.
让我说清楚,我明白这个特殊问题可能更好地解决不使用正则表达式,但为了简洁起见,我只想说我需要使用正则表达式(相信我,我知道有更好的方法来解决这个问题) ).
这是问题所在.我给了一个大文件,每行的长度恰好是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个或更多共同字符的所有其他行.
以下示例假定以下内容:
$line 始终是有效的格式
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过渡到ruby,我试图在ruby中找出php命令preg_match_all和preg_replace的同源性.
非常感谢!
我试图让所有子串与乘数匹配:
$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()?
我想在<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标记中获取所有文本.
这是我的字符串:
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)
结果是:
地址=>圣马克教堂
笔记=>东北\
如何让它忽略笔记的\'字符?
preg-match-all ×10
php ×9
preg-match ×5
regex ×5
grammar ×1
image ×1
preg-replace ×1
ruby ×1
string ×1