I'm trying to get the string hello world
.
This is what I've got so far:
$file = "1232#hello world#";
preg_match("#1232\#(.*)\##", $file, $match)
It is recommended to use a delimiter other than #
since your string contains #
, and a non-greedy (.*?)
to capture the characters before #
. Incidentally, #
does not need to be escaped in the expression if it is not also the delimiter.
$file = "1232#hello world#";
preg_match('/1232#(.*?)#/', $file, $match);
var_dump($match);
// Prints:
array(2) {
[0]=>
string(17) "1232#hello world#"
[1]=>
string(11) "hello world"
}
Even better is to use [^#]+
(or *
instead of +
if characters may not be present) to match all characters up to the next #
.
preg_match('/1232#([^#]+)#/', $file, $match);
Use lookarounds:
preg_match("/(?<=#).*?(?=#)/", $file, $match)
preg_match("/(?<=#).*?(?=#)/", "1232#hello world#", $match);
print_r($match)
Array
(
[0] => hello world
)
Test it here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With