我需要的正則表達式替換<
,>
和&
與<
,>
和&
但這種角色我想更換隻是<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