I have this test.php where i have this info :
callername1 : \'Fernando Verdasco1\'
callername2 : \'Fernando Verdasco2\'
callername3 : \'Fernando Verdasco3\'
call
There is a rather simple approach to tihs:
$fData = file_get_contents("test.php");
$lines = explode("\n", $fData);
foreach($lines as $line) {
$t = explode(":", $line);
echo trim($t[1]); // This will give you the name
}
You should store data in a file with the .php
extension, since it's not executable PHP. I looks like you're going for the JSON syntax.
Since you need it to work with ':' I assume, for whatever reason, you can't change the format. Your example with '=' works because of the regexp:
preg_match_all('/callername3=\'([^\']+)\'/',$Text,$Match);
This says, match text like callername3=
followed by a '
followed by one or more chars that are not a '
followed by a final '
. Everything between the '
s is stored in $Match[1][0] (if there were more parts in brackets they be stored in $Match[2][0], etc).
Your example doesn't work since it doesn't account for the spaces before and after the =
sign. But we can fix that up and change it to work for :
like this:
preg_match('/callername3\s*:\s*\'([^\']+)\'/',$Text,$Match);
echo $Match[1] ."\n";
This displays:
Fernando Verdasco3
And what that regular expression is match text that start callername3
followed by any amount of whitespace (that's the \s*
) followed by a :
, followed by any amount of whitespace, followed by a name in quotes (that is stored in $Match[1], this is the area of the regular expression enclosed in parenthesis).
I've also used just preg_match
because it looks like you only need to match one example.