我对preg_match有疑问。 我有一个文本字段,用户可以在其中填写随机文本。但是当他们输入时:
[IMG]图片网址[/ IMG]
我希望[IMG] [/ IMG]之间的所有内容都放在一个变量中。
我现在拥有的:
if(isset($_POST['edit_signature_table'])){
$string = $_POST['thread_message'];
echo $string;
if (preg_match('/[IMG](.*?)[/IMG]/', $string, $display)) {
print_r($display);
}else{
echo "[IMG][/IMG] was not used.";
}
}
当我在表单中发布内容并按提交时。我得到了刚刚填写的结果。(由echo $ string完成)。
但是。我总是得到这个结果:
This is typed in the textfield. and contains [IMG]an image[/IMG]
Warning: preg_match(): Unknown modifier 'I' in C:\xampp\htdocs\Proeven\Forum\profile.php on line 124
[IMG][/IMG] was not used.
如你所见。第一行是$ string的结果。
然后我得到一个错误(行在if(preg_match))
然后转到else语句。
然而,在我的结果中,您可以看到我使用[IMG] [/ IMG],我希望结果为:图像
有人可以告诉我我做错了吗?
编辑:
人们贬低并说它是重复的。我看了其他人的问题,但仍然不知道如何解决我的问题。
人们贬低。请告诉我为什么......我认为问题很清楚。
答案 0 :(得分:1)
您需要逃避正则表达式才能使其正常工作。
preg_match('/[IMG](.*?)[/IMG]/', $string, $display)
变为
preg_match('/\[IMG\](.*?)\[\/IMG\]/', $string, $display)
您还可以在此处轻松尝试不同输入的正则表达式:http://www.phpliveregex.com/