PHP、preg_match 和双引号
PHP, preg_match and double quotes
我在这里完全是菜鸟。我正在尝试提取 Marine Corp.(没有 $data 的引号。我已经搜索并搜索了如何处理双引号,但结果很短。有人可以提供一些指导吗?谢谢。
$data = '"title":{"rendered":"Marine Corp."}';
preg_match('/title":{"rendered":"(.*)"}/U',$data,$matches);
echo $matches[0]; //=> target
您要查找的正则表达式是 /\"title\"\:\{\"rendered\"\:\"(.*)\"\}/
$data = '"title":{"rendered":"Marine Corp."}';
preg_match('/\"title\"\:\{\"rendered\"\:\"(.*)\"\}/',$data,$matches);
$tmp = array_shift( $matches );
$tmp
将保留“Marine Corp.
”
另一方面,您似乎有一个 JSON 对象。如果是这样你可以做,那会简单得多:
$data = '{"title":{"rendered":"Marine Corp."}}';
$tmp = json_decode($data, true);
var_dump($tmp['title']['rendered']);
如果您不想从 $data 字符串中提取 "Marine Corp",请使用 str_replace()
功能:
echo str_replace('Marine Corp.', '', $data);
结果:"title":{"rendered":“”}
这样试试,
<?php
//If it is valid json then try with json_decode()
$json_string = '{"title":{"rendered":"Marine Corp."}}';
$json_array = json_decode($json_string,1);
echo "For Json Object:\n" . $json_array['title']['rendered']."\n";
//If it is just string pattern then with preg_match()
$re = '/"title":{"rendered":"(.*?)\.?"}/';
$str = '"title":{"rendered":"Marine Corp."}
"title":{"rendered":"Marine Police"}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
echo "\nFor String: \n";
foreach($matches as $match){
echo $match[1]."\n";
}
?>
输出:
For Json Object:
Marine Corp.
For String:
Marine Corp
Marine Police
参见 PHP 演示:https://eval.in/973297
参见 REGEX 演示:https://regex101.com/r/GyGN9U/1
我在这里完全是菜鸟。我正在尝试提取 Marine Corp.(没有 $data 的引号。我已经搜索并搜索了如何处理双引号,但结果很短。有人可以提供一些指导吗?谢谢。
$data = '"title":{"rendered":"Marine Corp."}';
preg_match('/title":{"rendered":"(.*)"}/U',$data,$matches);
echo $matches[0]; //=> target
您要查找的正则表达式是 /\"title\"\:\{\"rendered\"\:\"(.*)\"\}/
$data = '"title":{"rendered":"Marine Corp."}';
preg_match('/\"title\"\:\{\"rendered\"\:\"(.*)\"\}/',$data,$matches);
$tmp = array_shift( $matches );
$tmp
将保留“Marine Corp.
”
另一方面,您似乎有一个 JSON 对象。如果是这样你可以做,那会简单得多:
$data = '{"title":{"rendered":"Marine Corp."}}';
$tmp = json_decode($data, true);
var_dump($tmp['title']['rendered']);
如果您不想从 $data 字符串中提取 "Marine Corp",请使用 str_replace() 功能:
echo str_replace('Marine Corp.', '', $data);
结果:"title":{"rendered":“”}
这样试试,
<?php
//If it is valid json then try with json_decode()
$json_string = '{"title":{"rendered":"Marine Corp."}}';
$json_array = json_decode($json_string,1);
echo "For Json Object:\n" . $json_array['title']['rendered']."\n";
//If it is just string pattern then with preg_match()
$re = '/"title":{"rendered":"(.*?)\.?"}/';
$str = '"title":{"rendered":"Marine Corp."}
"title":{"rendered":"Marine Police"}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
echo "\nFor String: \n";
foreach($matches as $match){
echo $match[1]."\n";
}
?>
输出:
For Json Object:
Marine Corp.
For String:
Marine Corp
Marine Police
参见 PHP 演示:https://eval.in/973297
参见 REGEX 演示:https://regex101.com/r/GyGN9U/1