Mitch Mitch - 2 months ago 14
HTML Question

preg_match displaying nothing/Unknown modifier 'I'

i have a question about preg_match.
I have a textfield, where users can fill in random text. However when they type:


[IMG]image url here[/IMG]


i want everything between [IMG][/IMG] to be put in a variable.

What i have now:

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.";
}
}


When i post something in the form and press submit. i get the result i just filled in. (done by echo $string).

But. i always get this result:

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.


As you can see. The first line is me result from $string.

Then i get an error (line is at if(preg_match))

And then it goes to the else statement.

However in my result, you can see that i used [IMG][/IMG] and i expect the result to be: an image

Can someone tell me what i'm doing wrong?

EDIT:

people downvoting and saying it is a duplicate.

I looked at other peoples questions about this, but still did not know how to solve my problem.

People downvoting. Please tell me why... The question is clear enough i think.

Answer

You need to escape your regex in order for it to work.

preg_match('/[IMG](.*?)[/IMG]/', $string, $display)

becomes

preg_match('/\[IMG\](.*?)\[\/IMG\]/', $string, $display)

you can also easily try your regex on different inputs here: http://www.phpliveregex.com/