Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php正则表达式替换表单标记,但保留一些属性_Php_Regex_Preg Replace - Fatal编程技术网

php正则表达式替换表单标记,但保留一些属性

php正则表达式替换表单标记,但保留一些属性,php,regex,preg-replace,Php,Regex,Preg Replace,您好,我有以下代码: preg_replace('~<form\s*.*?(?:class="(.*?)"|id="(.*?)")?>~i','<form method="post" class="$1" id="$2">', "from html source code"); preg_replace(“~~i”,“from html源代码”); 我想要的是,如果表单标记中有class属性或id,那么它们就会被替换 <form method="post" cl

您好,我有以下代码:

preg_replace('~<form\s*.*?(?:class="(.*?)"|id="(.*?)")?>~i','<form method="post" class="$1" id="$2">', "from html source code");
preg_replace(“~~i”,“from html源代码”);
我想要的是,如果表单标记中有class属性或id,那么它们就会被替换

<form method="post" class="login-css">

因此,上述代码的输出将为:

<form method="post" class="login-css" id="">

如果表单标签如下所示:

<form method="post">

然后输出为:

<form method="post" class="" id="">

更换

<form method="post"(?: class="(.*?)")?(?: id="(.*?)")?>


我有一个工具(RegexBuddy),可以将其转换为php,但我自己不编程

$result = preg_replace('/<form method="post"(?: class="(.*?)")?(?: id="(.*?)")?>/', '<form method="post" class="$1" id="$2">', $subject);
$result=preg_replace(“//”,“$subject”);
我使用以下字符串进行测试,它可以正常工作

zer <form method="post" class="a" id="b">  zaer zer <form method="post" class="a">   azerzer
zer-zaer-zer-azerzer

实际上,你可能不得不降低它的严格程度,允许在某些地方使用空格。

我不太明白。HTML是PHP生成的,还是PHP会在运行时处理输入的HTML代码?如果是第一个,您不必使用正则表达式,还有其他方法可以做到这一点,比如一个简单的If语句。让我重新表述我的问题:这个标记位于何处,PHP应该如何访问它?它位于文件\u get\u contents中。我替换从文件\u get\u contents中找到的源代码。您需要javascript来实现这一点<代码>表单位于HTML中
zer <form method="post" class="a" id="b">  zaer zer <form method="post" class="a">   azerzer