<div></p>
with<div>
や<div foo="bar"></p>
withのような文字列を置き換えようとしています<div foo="bar">
preg_replace を使用してそれを行うにはどうすればよいですか? 正規表現についてはよくわかりませんが、次のようなことを試していました:
preg_replace( '/(<div.*><\/p)/', '$1', $content);
<div></p>
with<div>
や<div foo="bar"></p>
withのような文字列を置き換えようとしています<div foo="bar">
preg_replace を使用してそれを行うにはどうすればよいですか? 正規表現についてはよくわかりませんが、次のようなことを試していました:
preg_replace( '/(<div.*><\/p)/', '$1', $content);
like 式を使用して[^>]*
、次のものを含まないすべてのものに一致させ、何かが存在する場合は、それをグループでキャプチャすることができます ( 0>
個以上の前の式に一致するため)。$1
()
*
これにより、式は次のようになります。
/<div([^>]*)><\/p>/
置換パターンは、<div$1>
その後方参照を使用しています。これには、空白と空白を含む他のすべてが含まれています。<div
>
それに応じて動作します:
$s1 = '<div></p>';
$s2 = '<div foo="bar"></p>';
echo preg_replace('/<div([^>]*)><\/p>/', '<div$1>', $s1);
// <div>
echo preg_replace('/<div([^>]*)><\/p>/', '<div$1>', $s2);
// <div foo="bar">
そして、あなたが試みていたものに似た別の方法は、<div>
構造をユニットとして$1
withにキャプチャすることです(<div[^>]*>)
。これは、置換式全体になります。
echo preg_replace('/(<div[^>]*>)<\/p>/', '$1', $s1);
// <div>
echo preg_replace('/(<div[^>]*>)<\/p>/', '$1', $s2);
// <div foo="bar">