我需要的正则表达式替换<
,>
和&
与<
,>
和&
但这种角色我想更换只是<body></body>
标签替换字符串PHP的一部分
例如
之前更换
<head> <><><>& </head> <body><><>&</body>
替换后
<head> <><><>& </head> <body><><>&</body>
谢谢:)
我需要的正则表达式替换<
,>
和&
与<
,>
和&
但这种角色我想更换只是<body></body>
标签替换字符串PHP的一部分
例如
之前更换
<head> <><><>& </head> <body><><>&</body>
替换后
<head> <><><>& </head> <body><><>&</body>
谢谢:)
,我认为那是你真正需要的是:
<body>
部分。有关更多信息,请参阅this question;htmlspecialchars()
为结果。编辑:如果你确切地知道html的样子,你当然也explode
上</head>
或<body>
的分裂你的输入有两种,但是这将是高度依赖于输入的准确格式所以我不会推荐它。
要使用正则表达式做到这一点ti'll需要几个步骤来完成:
捕捉身体的内部串:
正则表达式:(^.*?<body>)(.*)(<\/body>)$
垫子CHES:
[0] => <head> <><><>& </head> <body><><>&</body>
[1] => <head> <><><>& </head> <body>
[2] => <><>&
[3] => </body>
分别替换每个类型字符的内部匹配[2]
重构串
$sourcestring="<head> <><><>& </head> <body><><>&</body>";
preg_match('/(^.*?<body>)(.*)(<\/body>)$/ims',$sourcestring,$matches);
$header=$Matches[1];
$body=$matches[2];
$footer=$Matches[3];
$body = preg_replace('/</ims','<',$body);
$body = preg_replace('/>/ims','>',$body);
$body = preg_replace('/&/ims','&',$body);
$output = $header . $body . $footer;
我已经做它有一些窍门。首先,我发现身体标签之间的文字,然后我将其更改为html特殊字符并保存。从那以后,我与[TO_BE_REPLACED]代替body标签之间的文本,并在最后,我改变文本与()所用htmlspecialchars转义文本
<?php
$str = '<head> <><><>& </head> <body><><>&</body>';
preg_match('/<body>(.*?)<\/body>/', $str, $match);
$special = htmlspecialchars($match[1]); // you can use html entities as well
$str = preg_replace('/<body>(.*?)<\/body>/','<body>[TO_BE_REPLACED]</body>',$str);
echo htmlspecialchars(str_replace('[TO_BE_REPLACED]', $special, $str)); //this one is only to show purpose
echo '<br>----<br>';
echo str_replace('[TO_BE_REPLACED]', $special, $str);
?>
这也会将双引号和单引号更改为它们各自的字符,而不包含在OP中。 –
@Denomales他可以使用str_replace数组,如果不需要htmlspecialchars()。他没有提及**,只是**这些字符将被替换。 – Robert
的确如此,但是他非常清楚需要替换哪些字符。 –
我需要这个,因为我有大的更换xml文件与此<, >和在
和simplexml_load_file()无法读取文件 现在我加载文件与文件获取内容,然后我想用preg_replace – php12345@ php12345替换也许像XMLReader的工作,看到我链接的问题至。 – jeroen
@ php12345看我的编辑。 – jeroen