我需要捕获给定html中的所有链接.
这是示例代码:
<div class="infobar">
... some code goes here ...
<a href="/link/some-text">link 1</a>
<a href="/link/another-text">link 2</a>
<a href="/link/blabla">link 3</a>
<a href="/link/whassup">link 4</a>
... some code goes here ...
</div>
Run Code Online (Sandbox Code Playgroud)
我需要把所有环节中div.infobar,与开始/link/
我试过这个:
preg_match_all('#<div class="infobar">.*?(href="/link/(.*?)") .*?</div>#is', $raw, $x);
Run Code Online (Sandbox Code Playgroud)
但它给了我唯一的第一场比赛.
谢谢你的建议.
下面的代码无法检测出现的单个实例.= O什么错了?= \
如何检测以星号开头的以下行(以换行符开头)?我不知所措.这不符合我的预期.
$text ="Nothing here to detect...though it is the first line.
* '' [[test]]
* Another line that starts with an asterisk
** yet another...though it has two...but who cares about the 2nd one?";
$t = preg_match_all('#^\*.*#', $text, $match);
echo "found=".$t."\n";
print_r($match);
Run Code Online (Sandbox Code Playgroud) 有点在PHP和Regex中的noobie,我从Web服务收到以下内容:
test:002005@1111@333333@;10205@2000@666666@;002005@1111@55555@;
Run Code Online (Sandbox Code Playgroud)
上面的行是3个数字的序列,重复3次.我想获得每个序列的第3个数字,我相信最好的课程(除了3000次爆炸)将是preg_match_all但我在艰难的时间环绕着RegEx.
最终结果应如下所示:
Array
(
[0] => 333333
[1] => 666666
[2] => 55555
)
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
以下代码从推文中提取#hashtags并将它们放在变量$ matches中.
$tweet = "this has a #hashtag a #badhash-tag and a #goodhash_tag";
preg_match_all("/(#\w+)/", $tweet, $matches);
var_dump( $matches );
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么以下结果有2个相同的数组而不是1个?
array(2) {
[0]=>
array(3) {
[0]=>
string(8) "#hashtag"
[1]=>
string(8) "#badhash"
[2]=>
string(13) "#goodhash_tag"
}
[1]=>
array(3) {
[0]=>
string(8) "#hashtag"
[1]=>
string(8) "#badhash"
[2]=>
string(13) "#goodhash_tag"
}
}
Run Code Online (Sandbox Code Playgroud) 我想写一个正则表达式,它提取<title>字符串中两个标签之间的内容,但不提取标签.IE我有以下内容
<title>My work</title>
<p>This is my work.</p> <p>Learning regex.</p>
Run Code Online (Sandbox Code Playgroud)
正则表达式
(<title>)(.*?)(<\/title>)
Run Code Online (Sandbox Code Playgroud)
提取物,<title>My work</title>但我只想提取My work.我怎样才能做到这一点?这是http://regex101.com/r/mD8fB0示例的链接
我正在使用这个:
$t = "#hashtag #goodhash_tag united states #l33t this";
$queryVariable = "";
if(preg_match_all('/(^|\s)(#\w+)/', $t, $arrHashTags) > 0){
array_filter($arrHashTags);
array_unique($arrHashTags);
$count = count($arrHashTags[2]);
if($count > 1){
$counter = 1;
foreach ($arrHashTags[2] as $strHashTag) {
if (preg_match('/#\d*[a-z_]+/i', $strHashTag)) {
if($counter == $count){
$queryVariable .= $strHashTag;
} else{
$queryVariable .= $strHashTag." and ";
}
$newTest = str_replace($arrHashTags[2],"", $t);
}
$counter = $counter + 1;
}
}
}
echo $queryVariable."<br>"; // this is list of tags
echo $newTest; // this is the remaining text …Run Code Online (Sandbox Code Playgroud) 我正在尝试在执行它们之前验证查询,如果查询不是mysql select语句,那么我必须向用户显示消息.
我在此链接中找到了以下正则表达式: 使用正则表达式验证简单选择查询
$reg="/^Select\s+(?:\w+\s*(?:(?=from\b)|,\s*))+from\s+\w+\s+where\s+\w+\s*=\s*'[^']*'$/i";
Run Code Online (Sandbox Code Playgroud)
接下来我写下面的代码,但它总是打印不选择查询($ match每次都是空的)
$string="select * from users where id=1";
preg_match_all($reg,$string,$match);
if(!empty($match)){
echo "select query";
//execute and process result
//$this->user_model->list($string);
}else{
echo "not select query";
//show_message('inv_query');
}
Run Code Online (Sandbox Code Playgroud)
请更正正则表达式以验证sql select语句(select,from,where,join,orderby groupby all in select statement).或者让我知道完成任务的其他好方法.
/*
some sample select statements
select * from users where id=1;
select * from users where id=1 AND name= 'Prabhu';
select * from users where id=1 AND name= 'Prabhu' order by name;
Select * from users where id=1 AND name= 'Prabhu' group by …Run Code Online (Sandbox Code Playgroud) 我想知道这里的反向引用有什么问题:
preg_match_all('/__\((\'|")([^\1]+)\1/', "__('match this') . 'not this'", $matches);
Run Code Online (Sandbox Code Playgroud)
它应该匹配__('')之间的字符串,但实际上它返回:
match this') . 'not this
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我需要拆分以下字符串并将每个新行放入一个新的数组元素中.
this is line a.(EOL chars = '\r\n' or '\n')
(EOL chars)
this is line b.(EOL chars)
this is line c.(EOL chars)
this is the last line d.(OPTIONAL EOL chars)
Run Code Online (Sandbox Code Playgroud)
(请注意,最后一行可能没有任何EOL字符.字符串有时也只包含1行,根据定义,它是最后一行.)
必须遵循以下规则:
所以这应该导致以下数组:
[0] => "this is line a."
[1] => "this is line b."
[2] => "this is line c."
[3] => "this is the last line d."
Run Code Online (Sandbox Code Playgroud)
我尝试过以下操作:
$matches = array();
preg_match_all('/^(.*)$/m', $str, $matches);
return $matches[1];
Run Code Online (Sandbox Code Playgroud)
$ matches [1]确实包含每个新行,但是:
无论如何,我一直在玩'\ R'和诸如此类的东西,但我找不到符合我上面概述的两条规则的好的正则表达式.有什么帮助吗?
可以从字符串中获取嵌套花括号中的所有内容吗?例如:
敏捷的棕色狐狸跳过了懒狗
所以我需要:
从大多数嵌套的顺序来看,这个顺序更好.