我是正规表达的新手,我需要一些帮助:).
我有这个:
$url = '<img src="http://mi.url.com/iconos/oks/milan.gif" alt="Milan">';
$pattern = '/<img src="http:\/\/mi.url.com/iconos/oks/(.*)" alt="(.*)"\>/i';
preg_match_all($pattern, $url, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
警告:preg_match_all()[function.preg-match-all]:未知修饰符'c'
我想选择'milan.gif'.
我怎样才能做到这一点?
<? php
$Src = 'images/pages/clients/logos/clnt_aljareera_img.jpg';
$pttn= '/&Src:'.$Src.'/';
$string=preg_replace($pttn,'',$string,1);
?>
Run Code Online (Sandbox Code Playgroud)
//输出错误:未知修饰符'p'
// If url matches regex
$regex = "/^(/upload/temporary/)[0-9]{4}_[0-9]{2}_[0-9]{2}_[A-Za-z0-9._ /-]+.[A-z]{2,4}$/";
if (preg_match($regex, $this->value)) {
$this->valid();
}
Run Code Online (Sandbox Code Playgroud)
Warning: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier 'p' in C:\Apache\www\profiletwist\lib\php\form\url.php on line 41
Call Stack
# Time Memory Function Location
1 0.0079 440016 {main}( ) ..\new.php:0
2 0.0964 667832 form->validate( ) ..\new.php:60
3 0.0968 668248 form_URL->validateUploadURL( ) ..\form.php:372
4 0.0969 668400 preg_match ( ) ..\url.php:41
Variables in local scope (#3)
$regex =
string '/^(/upload/temporary/)[0-9]{4}_[0-9]{2}_[0-9]{2}_[A-Za-z0-9._ /-]+.[A-z]{2,4}$/' (length=79)
Run Code Online (Sandbox Code Playgroud)
如何修复此"未知修饰符"错误的正则表达式不会发生?
最终,我想要一个正则表达式,以确保文本输入匹配:
"/upload/temporary/####_##_##_[A-z0-9 _-]+ "." [a-z]{3}
Run Code Online (Sandbox Code Playgroud)
这是文件名目标.开头不会改变,最后一部分可以是随机散列,后跟任意扩展.在正则表达式之后进行进一步处理,但这是第一次测试. …
我正在尝试运行我在在线 php regex 测试网站上调试的正则表达式。
这是完整的正则表达式:
$rule = '/[\s\S]*<(b|strong)>[\s\S]*notes:[\s\S]*<(\/b|\/strong)>([\s\S]*?)<(b|strong)>(sources|source|citation|data sources|last update)[\s\S]*/im';
Run Code Online (Sandbox Code Playgroud)
即使使用更简单的测试正则表达式:
$rule = "/[\s\S]*<(b|strong)>[\s\S]*/im";
Run Code Online (Sandbox Code Playgroud)
我仍然从这段代码中得到一个错误:
$matches = array();
preg_match($source_html, $rule, $matches);
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
警告:preg_match():未知修饰符“<” 在 .../FragmentGrabber.php 第 63 行
我不知所措,试图在我的本地机器上解决这个问题。有没有办法解决这个警告,让我的正则表达式正常工作。我试过修复我的正则表达式的转义字符,但这没有帮助。可能是字符编码问题?!请注意<输出与<.
编辑:
这是我的课程的片段,如果有人真的想要,我会发布整个内容。
// d() below is the Kint debugger.
public function get_fragments_by_name($source_html, $name)
{
$matches = array();
$rule = self::generate_regex_rule($name);
preg_match($source_html, $rule, $matches);
return $matches;
}
private function generate_regex_rule($name)
{
$end_tags = self::get_end_tag_options($name);
$rule = "/[\s\S]*<(b|strong)>[\s\S]*/";# . $name . ":[\s\S]*<(\/b|\/strong)>([\s\S]*?)<(b|strong)>(" . $end_tags . ")[\s\S]*/im";
d($rule);
return $rule; …Run Code Online (Sandbox Code Playgroud) 我使用这个非常简单的正则表达式:
^[\x20-\x7E]+$
Run Code Online (Sandbox Code Playgroud)
当我尝试将它与一些PHP正则表达式函数一起使用时,例如preg_match(),当我使用~字符(代字号)作为分隔符时,它会在单一情况下抛出警告.
因此,执行以下行很顺利
preg_match("/^[\x20-\x7E]+$/", $s); # delimiter "/"
preg_match("!^[\x20-\x7E]+$!", $s); # delimiter "!"
preg_match("#^[\x20-\x7E]+$#", $s); # delimiter "#"
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这条线
preg_match("~^[\x20-\x7E]+$~", $s); # delimiter "~"
Run Code Online (Sandbox Code Playgroud)
发出警告
Warning: preg_match(): Unknown modifier ']' in some_script.php on line XX
Run Code Online (Sandbox Code Playgroud)
注意:只有当它与双引号一起使用时才会发生!
我一直使用代字号作为分隔符,直到这种情况从未遇到过问题,并且真的很想知道为什么会发生这种情况.找不到代字号在正则表达式中有一些特殊含义(我现在肯定它没有99%),或者它只是一个错误.
我当然可以解决这个问题,但问题是:代字号和任何其他分隔符有什么区别?
当我写了下面,我得到这样的警告,它不匹配任何东西,但我敢肯定,这$row_search['content']包含$value...
preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched);
WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xampp\htdocs\finance\search\search.php on line 82
Run Code Online (Sandbox Code Playgroud)
为什么我收到这样的警告信息?
谢谢
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'l' in /var/www/test.php on line 9
Run Code Online (Sandbox Code Playgroud)
它说我的正则表达式有一个未知的修饰符,但我不确定触发错误到底发生了什么
preg_match_all("/\<select id\=\'subscription_division_id\'(.+?)</select>\/is", $html, $matches);
Run Code Online (Sandbox Code Playgroud) 试图解决这个正则表达式.它应该在字符串中找到任何超链接并在它们周围放置锚标记.继续回来,未知的标识符'+'.我认为加唱是正则表达式的一部分?
<?php
//replace links with clickable links
// match protocol://address/path/
$comments = preg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $comments);
// match www.something
$comments = preg_replace("(^| )(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\2</a>", $comments);
?>
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
任何人都知道为什么会出现这种情况?尝试使用此方法根据用户代理重定向用户.当用户代理是搜索机器人时,会出现此警告.Windows XP MSIE 8用户代理也被错误地重定向.
"警告:preg_match()[function.preg-match]:第36行/.../getos.php中的未知修饰符'c'"
function getOS($userAgent) {
$oses = array (
'iPhone' => '(iPhone)',
'iPad' => 'iPad',
'Android' => 'Android',
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system
'Windows 98' => '(Windows 98)|(Win98)',
'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
'Windows 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
'Windows …Run Code Online (Sandbox Code Playgroud) php internet-explorer windows-xp googlebot internet-explorer-8
这有什么问题?
if((preg_match('[a-zA-Z]{1,7}+',$_POST['naam'])) and (preg_match('[^\@\#\<\>\&\*\/]+[a-zA-Z0-9]+!',$_POST['password'])))
Run Code Online (Sandbox Code Playgroud)
第一个正则表达式我想要一个1-7长的字符串只包含字母.
第二个正则表达式我想要一个包含字母和数字的字符串!在末尾.