I have a sample code:
$text = "240 x 400 pixels, 3.0 inches (~155 ppi pixel density)";
And using regex:
preg_match_all('/(.*)( x )(.*)/i', $text, $arr);
print_r($arr[0]);
Result not change, how to fix it ?
I have a sample code:
$text = "240 x 400 pixels, 3.0 inches (~155 ppi pixel density)";
And using regex:
preg_match_all('/(.*)( x )(.*)/i', $text, $arr);
print_r($arr[0]);
Result not change, how to fix it ?
I'm guessing you want to change your regular expression to something like this:
preg_match_all('/(\d+) x (\d+)/i', $text, $arr);
The "." matches any character, so when you used .*
it just matched the whole string---it doesn't matter what you put after it. With regular expressions, it's generally a good rule of thumb to be as specific as possible. In this case \d+
will match 1 or more numeric digits, so it will stop matching when it gets to the first non-numeric digit, in this case, a space.
Here's the result of $arr
that I get with your $text
string and the updated regular expression:
Array
(
[0] => Array
(
[0] => 240 x 400
)
[1] => Array
(
[0] => 240
)
[2] => Array
(
[0] => 400
)
)
Hopefully it's closer to what you were looking for.